如何在SQL Server 2005中设置数据库的默认架构?

时间:2011-11-21 06:22:57

标签: sql sql-server sql-server-2005

以下行有效:

SELECT * FROM [myschema].users

但这不是:

SELECT * FROM users

3 个答案:

答案 0 :(得分:52)

默认架构是特定于用户的:

USE yourDatabase;
ALTER USER [yourUser] WITH DEFAULT_SCHEMA = myschema;

有关SQL 2005的ALTER TABLE的更多信息也可能对您有所帮助。

由于这是特定于用户的,如果您有多个用户,则需要为每个要更新其默认架构的用户执行此查询(在每个数据库上)。

重要的是要注意:

The value of DEFAULT_SCHEMA is ignored if the user is a member of the sysadmin
fixed server role. All members of the sysadmin fixed server role have a default
schema of dbo.

答案 1 :(得分:3)

您可以使用:

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;

设置用户的默认架构。

答案 2 :(得分:0)

就像user960567一样,我尝试了Adam和Ivan的回答,但无法正常工作。

我在跑步:

ALTER USER myuser WITH DEFAULT_SCHEMA=newschema

按照建议,但是在执行并执行之后

SELECT SCHEMA_NAME()

它仍然返回“ dbo”作为默认模式。

要解决此问题,我执行了

ALTER USER myuser WITH DEFAULT_SCHEMA=newschema EXECUTE AS USER='myuser'

并按预期工作-现在执行:

SELECT SCHEMA_NAME()

返回“ newschema”。