小编Swi*_*der的帖子

拒绝访问 SQL Server 中的信息架构

我正在寻找禁用SQL Server 中用户/组访问sys.tables/的最佳方法Information Schema

从 2008 年发现了这个线程

它显示了一种如何拒绝访问的方法,[sys].[something]如下所示:

 DENY SELECT ON [sys].[columns] TO DenySystemTableSelectRole
 GO
 DENY SELECT ON [sys].[tables] TO DenySystemTableSelectRole
 GO
 DENY SELECT ON [sys].[syscolumns] TO DenySystemTableSelectRole
 GO
 DENY SELECT ON [sys].[sysobjects] TO DenySystemTableSelectRole
 GO
Run Code Online (Sandbox Code Playgroud)

但是没有办法如何禁用对以下内容的访问Information Schema

DENY SELECT ON INFORMATION_SCHEMA.TABLES To DenySystemTableSelectRole
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用。

如何禁用对 information_schema 的访问?

是否有更简单的方法禁用对所有sys/ 的访问information_schema

更新: 实际上我不能同时运行以下语句:

DENY SELECT ON [sys] TO reducedDBO
GO
DENY SELECT ON INFORMATION_SCHEMA To reducedDBO …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server-2008 sql-server sql-server-2008-r2 information-schema

14
推荐指数
2
解决办法
2万
查看次数

连接字符串的 CNAME 别名是个好主意吗?

为了非常灵活并更轻松地将数据库移动到不同的服务器,我们提出了为每个数据库使用别名的想法。因此,通过简单地更改 DNS 条目,我们可以将所有查询路由到不同的数据库服务器,而无需更改连接字符串或重新部署相应的客户端应用程序。

澄清:

每个数据库我们都会有一个别名。因此,如果将数据库移动到不同的服务器,只需更改其 DNS 别名。

例如:

  • db1-alias.mydomain.com 指向某个随机服务器上的 db1。
  • db2-alias.mydomain.com 指向在其他一些随机服务器上执行 db2。

因此,假设 db1 已从 server1 移至 server2,则无需更改连接字符串。只需要更改 DNS 别名条目,转发到 server2 而不是 server1。

这有什么已知的缺点吗?

sql-server network dns connections

6
推荐指数
1
解决办法
1145
查看次数