2010-02-19 51 views

回答

9

如果您沒有在要創建的表名上明確指定模式,則會使用用戶當前的默認模式創建該模式。

我敢打賭,你正在使用的用戶有其自己的個人模式集作爲其默認模式 - 這就是爲什麼你的表創建自己的個人模式。

你可以檢查你有什麼數據庫用戶,以及他們的默認模式是通過檢查sys.database_principals(SQL Server 2005和以上):

SELECT name, type_desc, default_schema_name 
FROM sys.database_principals 

要解決這個問題:

  • 指定模式你想明確地使用(無論如何,最好的做法!)

    CREATE TABLE dbo.T_TableName 
    
  • 改變用戶的默認模式,以dbo

    ALTER USER [Domain\YourUser] WITH DEFAULT_SCHEMA = dbo 
    

但作爲一般的經驗法則,我建議總是使用「DBO」。如果你想讓dbo模式中的所有數據庫對象都顯式添加前綴。如果您明確地告訴它數據庫對象的存在位置,SQL Server將不必去尋找不同的模式,從而有助於提高性能。

3

在SSMS中調用dbo.T_TableName。如果您擁有正確的權限,它將起作用。

1

對於創建該表的數據庫,您被分配爲db_owner嗎?如果不是,這可能是問題。嘗試將您的用戶映射權限添加到數據庫中。

USE [yourDatabase] 
GO 
EXEC sp_addrolemember N'db_owner', N'DOMAIN\UserOrGroup' 
GO 
4

你需要或者創建表爲「dbo.Whatever」,或者你需要通過發出命令像更改默認模式(或你的SA爲你做):

ALTER USER [DOMAINNAME\UserName] WITH DEFAULT_SCHEMA = dbo;