我的数据库中有一个架构定义。除了现在每次我做一个sql语句,我必须提供模式...
SELECT * FROM [myschema].table
我使用management studio为我的用户设置了默认架构,并运行了
ALTER USER myUser WITH DEFAULT_SCHEMA [myschema]
在编写没有模式的查询(SELECT * FROM table)
有没有办法在不必一直指定架构名称的情况下编写SELECT * FROM table
?
使用SQL Management Studio在SQL 2005上。
答案 0 :(得分:47)
用户是SA
,如果是这样,那么根据documentation SA
用户始终默认为dbo
架构,它将无效。
忽略DEFAULT_SCHEMA的值 如果用户是该成员 sysadmin固定服务器角色。所有 sysadmin固定服务器的成员 role具有dbo的默认架构。
答案 1 :(得分:4)
几个选项:
Create a synonym表示您要参考的表格:
CREATE SYNONYM table_name
FOR [your_db].[your_schema].table_name
...这将影响在该数据库的上下文中不使用至少两个名称表示法的所有人。 Read more about it here。但它最终与模式相关联。
检查在“可用数据库”下拉列表中选择的数据库(执行按钮左上角)是否正确。
指定表(和视图)引用时使用三个名称表示法:
SELECT *
FROM [your_db].[your_schema].table_name
答案 2 :(得分:2)
如果您不想使用“完全限定”的SQl名称,则需要避免使用未使用分配的“dbo”默认架构的任何帐户或角色创建表。如果您不打算使用它,为什么还需要更改用户的默认架构?