我有一个具有默认架构和自定义架构的Server数据库。因此,例如,两个表可能是database.dbo.table1和database.customschema.table2.
我希望将“定制架构”置于源代码管理之下,并且已将其加载到数据库项目中。
当我使用工具-> Server ->新架构比较时.工具时,它返回所有数据库架构的差异。
它将显示所有"dbo“表在数据库项目中是不同的/删除的,即使我不打算将它们保存在项目中的源代码管理之下。
是否有方法限制结果以显示我的数据库项目与“定制模式”对象的实际数据库之间的差异?
发布于 2021-09-23 00:22:59
我会说不。用于使用架构比较的文档解释了筛选选项,这些选项只能排除对象的类型:
还可以单击架构比较窗口工具栏中的“选项”按钮,以指定比较了哪些对象、忽略了哪些类型的差异以及其他设置。
ApexSQL在关于数据库比较的页面上也注意到了这一点:
Visual比较可以在比较之前筛选对象类型(,但不能筛选单个对象),而ApexSQL Diff不能通过Visual中打开的模式比较查询窗口筛选对象类型(ApexSQL Diff),而可以在之后编辑项目,进一步缩小对象范围并进行更详细的筛选。
我认为,如果要筛选出某个模式,则需要使用不同的工具。我们使用Redgate工具(),它们允许您定义筛选文件以排除某些对象。
发布于 2022-05-11 20:50:39
发布于 2022-07-21 15:51:17
是的,你可以
诀窍是创建一个只能看到该模式的特殊用户。在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中的对象。
https://stackoverflow.com/questions/40287141
复制相似问题