首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Visual和SQL Server中模式名称的比较

Visual和SQL Server中模式名称的比较
EN

Stack Overflow用户
提问于 2016-10-27 14:22:33
回答 3查看 1.9K关注 0票数 13

我有一个具有默认架构和自定义架构的Server数据库。因此,例如,两个表可能是database.dbo.table1database.customschema.table2.

我希望将“定制架构”置于源代码管理之下,并且已将其加载到数据库项目中。

当我使用工具-> Server ->新架构比较时.工具时,它返回所有数据库架构的差异。

它将显示所有"dbo“表在数据库项目中是不同的/删除的,即使我不打算将它们保存在项目中的源代码管理之下。

是否有方法限制结果以显示我的数据库项目与“定制模式”对象的实际数据库之间的差异?

EN

回答 3

Stack Overflow用户

发布于 2021-09-23 00:22:59

我会说不。用于使用架构比较的文档解释了筛选选项,这些选项只能排除对象的类型:

还可以单击架构比较窗口工具栏中的“选项”按钮,以指定比较了哪些对象、忽略了哪些类型的差异以及其他设置。

ApexSQL在关于数据库比较的页面上也注意到了这一点:

Visual比较可以在比较之前筛选对象类型(,但不能筛选单个对象),而ApexSQL Diff不能通过Visual中打开的模式比较查询窗口筛选对象类型(ApexSQL Diff),而可以在之后编辑项目,进一步缩小对象范围并进行更详细的筛选。

我认为,如果要筛选出某个模式,则需要使用不同的工具。我们使用Redgate工具(),它们允许您定义筛选文件以排除某些对象。

票数 0
EN

Stack Overflow用户

发布于 2022-05-11 20:50:39

不,在Visual上进行架构比较时,无法筛选出架构。您可以做的是将您的项目(只包含自定义架构)与数据库进行比较,并且在比较完成之后,您可以按架构对差异进行分组,一旦您按架构分组,您就可以从所有未在自定义架构下分组的差异中排除出来。

要对差异进行分组,模式比较组结果按钮上的工具标题上有一个按钮,您可以通过右键单击组来排除摸索的结果。排除选择

票数 0
EN

Stack Overflow用户

发布于 2022-07-21 15:51:17

是的,你可以

诀窍是创建一个只能看到该模式的特殊用户。在visual studio中,在与数据库的连接中使用该用户帐户,它应该可以工作。

您需要为数据库添加一个新用户:

代码语言:javascript
复制
CREATE USER [customschemaUser] FOR LOGIN [customschemaUser] WITH DEFAULT_SCHEMA=[customschema]

你需要创建一个新角色

代码语言:javascript
复制
CREATE ROLE customschemaRole AUTHORIZATION dbo;

然后将新用户添加到角色中。

代码语言:javascript
复制
EXEC sp_addrolemember 'customschemaRole', 'customschemaUser';

将架构的所有权设置为新角色

代码语言:javascript
复制
ALTER AUTHORIZATION ON SCHEMA::customschema TO customschemaRole;

现在,为新用户授予架构的权限。

代码语言:javascript
复制
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中的对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40287141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档