我有一个具有默认架构和自定义架构的 SQL Server 数据库。例如,两个表可能是 database.dbo.table1 和 database.customschema.table2。
我想将“customschema”保留在源代码控制之下,并且我已将其加载到我的 Visual Studio SQL Server 数据库项目中。
当我使用工具 -> SQL Server -> 新架构比较...实用程序时,它返回所有数据库架构的差异。
它会将数据库项目中的所有“dbo”表显示为不同/已删除,即使我不打算将它们保留在源代码控制下的项目中。
有没有办法限制结果以显示我的数据库项目和“customschema”对象的实际数据库之间的差异?
最佳答案
是的,你可以
诀窍是创建一个只能看到该架构的特殊用户。 在 Visual Studio 中使用该用户帐户连接到数据库,它应该可以工作。
您需要为数据库添加新用户:
CREATE USER [customschemaUser] FOR LOGIN [customschemaUser] WITH DEFAULT_SCHEMA=[customschema]
您需要创建一个新角色
CREATE ROLE customschemaRole AUTHORIZATION dbo;
然后将新用户添加到角色
EXEC sp_addrolemember 'customschemaRole', 'customschemaUser';
将架构的所有权设置为新角色
ALTER AUTHORIZATION ON SCHEMA::customschema TO customschemaRole;
现在为新用户授予架构权限
GRANT ALTER, DELETE, EXECUTE, INSERT, REFERENCES, SELECT,
UPDATE, VIEW DEFINITION ON SCHEMA::customschema TO customschemaRole;
GRANT CREATE TABLE, CREATE PROCEDURE, CREATE FUNCTION, CREATE VIEW TO customschemaRole;
这样,当您使用 customschemaUser
连接到数据库时,您应该只能看到 customschema
中的对象
关于sql-server - 在 Visual Studio 和 SQL Server 中按架构名称比较架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40287141/