以下行有效:
SELECT * FROM [myschema].users
但这并不:
SELECT * FROM users
默认架构是特定于用户的:
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.
像用户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()
返回“新闻架构”。
您可以使用:
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
设置用户的默认架构。