Ste*_*ger 8 sql sql-server ssms
问题:当我T_TableName
使用SQL Server Management-Studio 创建表()时,它始终将表创建为
Domain\UserName.T_TableName
Run Code Online (Sandbox Code Playgroud)
代替
dbo.T_TableName
Run Code Online (Sandbox Code Playgroud)
怎么了 ?
mar*_*c_s 10
如果未在要创建的表名上明确指定架构,则将在用户的当前默认架构中创建该架构.
我敢打赌,您正在使用的用户将自己的个人架构设置为其默认架构 - 这就是为什么您的表在他自己的个人架构中创建的原因.
您可以通过检查sys.database_principals
(SQL Server 2005及更高版本)来检查您拥有的数据库用户以及他们的默认架构:
SELECT name, type_desc, default_schema_name
FROM sys.database_principals
Run Code Online (Sandbox Code Playgroud)
要解决这个问题:
指定要明确使用的模式(无论如何最佳实践!)
CREATE TABLE dbo.T_TableName
Run Code Online (Sandbox Code Playgroud)将用户的默认架构更改为 dbo
ALTER USER [Domain\YourUser] WITH DEFAULT_SCHEMA = dbo
Run Code Online (Sandbox Code Playgroud)但作为一般经验法则,我建议始终使用"dbo".如果要在dbo架构中拥有所有数据库对象,则显式前缀.如果你明确地告诉它你的数据库对象存在的位置,SQL Server也不必在不同的模式中寻找,那么也有助于提高性能(如此轻微).
归档时间: |
|
查看次数: |
7905 次 |
最近记录: |