sql-server - EF 有没有办法在没有查看任何数据库权限的情况下使用数据库?
问题描述
问题是我们的用户不能被授予查看任何数据库的权限,也不能创建数据库。因此,我们设置了一个帐户,即数据库的 db_owner 并创建了空白数据库来填充。在本地测试,以上仅在我们 GRANT 用户查看任何数据库时有效,因此不适用于我们的目标环境。我的假设是 EF 正在尝试确定数据库是否已经存在,但由于它看不到任何数据库,它总是会尝试创建一个。有什么办法吗?理想情况下 - 是否有一个设置可以告诉 EF DB 在那里并且不需要寻找它?
解决方案
这是 EF6 中的一个错误。该代码错误地假设 db_id('dbname') 在没有 VIEW ANY DATABASE 的情况下工作。仅当运行查询的登录名是数据库所有者时才有效。不仅仅是 DB_OWNER 固定数据库角色的成员。我已经报告了它,并提出了改进的建议。但我不确定它会得到修复。
作为一种解决方法,只需让应用程序用户成为真正的数据库所有者。这不会阻止系统管理员以 dbo 身份连接。例如
alter authorization on database::AppDatabase to Appuser
在将登录名设为所有者之前,您必须删除数据库用户。
推荐阅读
- glib - 关于 Vala 上的 GLib.Idle
- php - 尝试获取 Instagram 嵌入页面 HTML 代码时出错
- amazon-web-services - AWS IoT 移动应用程序
- python - urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='127.0.0.1', port=49951): 使用 Selenium 和 Python 的 url 超出了最大重试次数
- ios - 链接动态框架 - 静态
- mysql - 为什么在使用 FULL JOIN 时我的列“未知”
- google-bigquery - 使用 Api 获取共享数据集
- c# - C#:将超类转换为子类
- python - 如何使用 Python 下载 youtube 视频?
- javascript - 是否可以在没有 async/await 的情况下从 Promise 返回已解析的值?