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

问题描述 投票:0回答:3

以下行有效:

SELECT * FROM [myschema].users

但这并不:

SELECT * FROM users
sql sql-server sql-server-2005
3个回答
84
投票

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

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.

5
投票

像用户960567一样,我尝试了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()

返回“新闻架构”。


4
投票

您可以使用:

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;

设置用户的默认架构。

© www.soinside.com 2019 - 2024. All rights reserved.