首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL server架构和默认架构

SQL server架构和默认架构
EN

Stack Overflow用户
提问于 2010-09-28 01:25:00
回答 3查看 82.5K关注 0票数 37

我在数据库中定义了一个模式。但现在每次我执行sql语句时,我都必须提供模式... SELECT * FROM [myschema].table

我使用management studio为我的用户设置了默认模式,还运行了ALTER USER myUser WITH DEFAULT_SCHEMA [myschema],但在没有模式的情况下编写查询(SELECT * FROM table)时,仍然得到无效的对象'table‘

有没有一种方法可以编写SELECT * FROM table而不必一直指定模式名称?

它基于SQL 2005,使用SQL Management Studio。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-28 01:32:17

用户是SA吗?如果是,根据documentation SA,它将不起作用。默认情况下,用户始终使用dbo模式。

如果用户是sysadmin固定服务器角色的成员,则忽略DEFAULT_SCHEMA的值。sysadmin固定服务器角色的所有成员都具有缺省架构dbo.

票数 56
EN

Stack Overflow用户

发布于 2010-09-28 02:19:08

有几个选项:

  1. 是否在安全>用户(在SSMS中)下列出了您的用户?检查属性(右键单击名称),并查看是否在数据库的上下文中而不是在实例中设置了默认模式(这是您要引用的表的ALTER USER是什么:

为your_db.your_schema.table_name创建同义词table_name

在该数据库上下文中,...which将影响不使用至少两个名称表示法的每个人。Read more about it here。但它最终与在“可用数据库”下拉列表(在“执行”按钮左上角)中选择的数据库正确相关。

  • 在指定表(和视图)引用时使用三种名称表示法:

SELECT * FROM your_db.your_schema.table_name

票数 4
EN

Stack Overflow用户

发布于 2012-10-24 05:16:55

如果您不想使用“完全限定的”SQl名称,那么您需要避免使用任何帐户或角色来创建表,这些帐户或角色不使用分配的"dbo“默认模式。如果不打算使用默认模式,为什么还要更改用户的默认模式呢?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3806245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档