2013-08-22 24 views
2

我們正在爲我們的數據庫創建一個模式版本。現在我們有一個包含列版本和單行版本的數據庫表。SQL Server中是否有標量數據庫變量?

是否有可能在數據庫而不是表上創建一個標量變量?

是這樣的:

SET DBNAME.dbo.DBVersion = 1;

+0

你可能要考慮使用[擴展屬性](http://technet.microsoft.com/en-us/library/ms190243(V功能= sql.105).aspx)爲此目的 – peterm

+0

想要在答案@peterm中解釋它們嗎? – Spence

+0

「Singleton Table」方法沒什麼問題 – sqlvogel

回答

4

您可能會考慮將標量值存儲在附加到數據庫的擴展屬性中。

要添加一個擴展屬性使用sp_addextendedproperty

EXEC sp_addextendedproperty @name = N'DBVersion', @value = '1'; 

爲了讓你的財產的價值fn_listextendedproperty

SELECT value FROM fn_listextendedproperty(N'DBVersion', default, default, default, default, default, default); 

輸出:

 
Value 
----- 
    1 

延伸閱讀:

+0

我在猜測,人們只是爲了表格,因爲它們很容易查詢。這絕對是完成這項工作。如果沒有人比這更有趣,我會在幾天內接受。 – Spence

+0

@Spence當然。慢慢來:)祝你好運。 – peterm

+0

如果經常使用這種技術,我會對此技術有性能保留。我不相信目錄要快。我只是創建自己的表和功能。 – usr

1

對於靜態(只讀)數據,還可以定義一個單行視圖:

CREATE VIEW V_Constants AS 
SELECT '1' AS DBVersion 

在較早的草圖answer

+0

不錯,比可以修改的實際表更好。 – Spence

2

當我需要在數據庫的某個地方存儲常量值,這不一定是相關的,我通常最終會得到dbo.Config表,每個成本都需要一列。

如果你真的想保存你可以考慮擴展屬性,視圖,函數或存儲過程在表外這地方。

你總是可以創建一個看起來像

CREATE FUNCTION dbo.GetSomeConst() 
RETURNS int 
BEGIN 
    return 12 
END 
+0

這是一個有趣的方法。看起來不錯並且很實用,你應該可以將它映射到DBML中。此外,您可以更新函數返回,並且無需使用修改代碼就無法更改,而基於數據庫表的答案可以由用戶修改。 – Spence

+0

我真的很傷心,因爲我非常喜歡這個解決方案。我認爲這個和接受的答案都是對這個問題的合理回答。這在某些情況下會更好。 – Spence

相關問題