2010-06-30 107 views
0

在Microsoft SQL Server中,我有一個架構XXX。 問:我如何創建一個用戶XXX,從而發出以下命令:XXX架構默認

SELECT * FROM Table 

相同

SELECT * FROM XXX.Table 

這是我到目前爲止有:

CREATE SCHEMA XXX authorization dbo -- I think 
CREATE LOGIN XXX 
WITH PASSWORD = '123'; 
CREATE USER ItDontMatter FOR LOGIN XXX 
WITH DEFAULT_SCHEMA = XXX; 

回答

4

正確。

DEFAULT_SCHEMA選擇是你用什麼

指定將由服務器進行搜索時,它解決了對象的名字爲這個數據庫用戶的第一個架構。

如果DEFAULT_SCHEMA留定義,數據庫的用戶將使用DBO作爲其默認模式。可以將DEFAULT_SCHEMA設置爲當前不存在於數據庫中的模式。可以在創建指向的模式之前設置DEFAULT_SCHEMA。

+0

在「此用戶擁有的箱架構」,我也必須檢查的db_owner或者它不工作。 – 2010-06-30 20:39:03

2

作爲gbn答案的一個小記錄,兩者從來都不完全一樣。如果您不指定表所有者,SQL Server將不會緩存您的查詢,因爲它不確定訪問權限。因此,爲了提高性能,請在您的查詢,程序,功能和視圖中指定schema.table

+0

你有參考嗎? – 2010-07-01 19:41:49

+0

@羅蘭肖:有趣。我跑了一些測試,它看起來像模式名稱沒有什麼區別(緩存的計劃是在'syscachedobjects'表。)我在哪裏工作,我們有一個常設規則包括DBO無處不增加緩存,但我想它以後是不是有用所有。神話破滅! – Andomar 2010-07-01 20:44:14

+0

當然還有很多其他的包含模式的理由,但看起來性能並非一勞永逸:) – 2010-07-01 21:00:13