【问题标题】:Dynamically change my schema动态更改我的架构
【发布时间】:2010-04-17 00:34:49
【问题描述】:

我想知道是否有办法更改我在 Management Studio 中工作的架构。例如,我可能有一个默认模式 dbo。但有时我可能想查询会计模式中的对象。如果我可以发出命令并执行它,那就太好了,这样我就不再必须在表和视图之前包含会计。但是下次我进去时,我会回到默认的dbo。

【问题讨论】:

    标签: sql-server-2005 tsql sql-server-2008


    【解决方案1】:

    您应该始终为您的对象添加架构前缀。在AdventurWorks 数据库中,您会注意到模式的广泛使用:

    Select ... From Person.Contact
    Select ... From Person.StateProvince
    

    在每个查询中,您在对象前面加上架构并用句点分隔它们。 (<schema>.<object>)。当您省略模式时,系统需要更多的工作来确定您想要哪个对象。即使您引用的所有对象都是dbo,您也应该在所有对象引用中包含dbo

    现在,说了这么多,您可以使用 ALTER USER 更改默认架构:

    ALTER USER userName  WITH DEFAULT_SCHEMA = schemaName
    

    即便如此,我强烈建议您在引用任何对象时始终包含架构。

    【讨论】:

    • 我知道我始终可以使用架构名称,并且我可以更改我的默认架构。我正在寻找的是一种快速更改特定连接默认值的方法。我理解完全限定名称的原因,但作为一个诚实的人,有时我只想快速制作原型,而不需要额外的架构信息开销。
    • @Kirk - 无法为每个连接设置默认架构。唯一的方法是使用 Alter 语句,它会为您的用户更改它。当然,您可以简单地在脚本的顶部放置一个 alter 语句,在脚本底部放置另一个语句来重置它。
    猜你喜欢
    • 1970-01-01
    • 2021-01-22
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 2011-12-19
    • 2023-03-06
    • 2015-08-06
    相关资源
    最近更新 更多