我想要创建一个Windows身份验证服务器登录,使它不能看到任何系统数据库e.g.master,模型。
我知道我们可以控制数据库级别的视图定义,例如数据库用户、数据库角色,但我不想将它们配置到所有系统数据库中。
因此,我首先:
创建Windows身份验证登录
创建自定义服务器角色
拒绝自定义服务器角色的视图定义
向角色添加登录名
我希望登录时不应该看到所有的系统数据库,但它仍然可以在系统数据库节点下看到master和tempdb。
这是结果的截图。
📷
这些是我的SQL语句。
-- Create login from Windows User
USE MASTER
GO
CREATE LOG
在我的数据库中,我使用了使用对称密钥的数据库列加密。我遵循了这个教程。它使用对称密钥,对其他人不可见。但是数据库管理员可以通过执行调用对称密钥的查询来查看加密列。
USE EncryptTest
GO
OPEN SYMMETRIC KEY TestTableKey DECRYPTION
BY CERTIFICATE EncryptTestCert
SELECT CONVERT(VARCHAR(50),DECRYPTBYKEY(EncryptSecondCol)) AS DecryptSecondCol
FROM TestTable
GO
我需要一个数据库级别的加密和数据库管理员也应该不能解密的
大多数关系数据库构建教科书都谈到了能够固定页面的概念,即防止操作系统将其交换出内存。这个概念是为了让数据库软件可以使用它自己的缓冲区替换算法,这可能比操作系统虚拟内存策略提供的任何东西更适合。
我不清楚典型的桌面操作系统是否真的为程序员提供了固定页面的能力。例如,我在OS上找到的最好的页面是有线页面,但这些页面似乎只有超级用户才能使用。
固定页面的概念,以及定义适当的缓冲区替换策略来取代操作系统的概念,只是理论上的兴趣,而不是真正的关系数据库系统实现的?还是典型的桌面操作系统(Linux、Windows、OS )确实包含用于钉住的钩子,而典型的关系数据库软件(Oracle、SQL Server