2011-02-23 92 views
14

我正在嘗試對數據庫名稱進行一些UI驗證。我被告知來自不同的地方,SQL Server數據庫名稱在SQL Server中存儲爲sysname。我也通過檢查sys.Databases來驗證。SQL Server中的最大數據庫名稱長度

因此,我讓我的文本框在UI中具有最大長度爲128個字符。這是sysname類型的最大長度。

然而,我發現,在我的SQL Server 2005 Express版本,如果我長的輸入與128個字符的數據庫名稱,它總是抱怨

未能創建默認的日誌文件,因爲名字太長

爲了確保我可以成功創建數據庫,我發現我需要將最大限制設置爲124個字符。

我現在的問題是,在所有不同的Windows操作系統上,所有版本的SQL Server的124個字符限制是否都是真的?

+1

可能有用的信息:[Windows最大路徑長度限制](http://msdn.microsoft.com/en-us/library/aa365247%28v=vs.85%29.aspx#maxpath) – drudge 2011-02-23 19:44:26

+0

您可以創建一個任何名字的日誌文件在CREATE數據庫語句中。它不必包含數據庫名稱... – 2011-02-23 19:46:23

回答

14

日誌文件名不需要包含數據庫名稱。

這對我來說很好,例如。

CREATE DATABASE [AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA] ON PRIMARY 
( 
NAME = N'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\A128.mdf') 
LOG ON 
( 
NAME = N'A128_log', 
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\A128_log.LDF') 
+3

我明白了。我想我現在明白了這個問題。有兩個限制 - 一個用於數據庫名稱和一個用於日誌文件。我認爲你是對的,因爲如果我不指定日誌文件名,它會自動將「_log」附加到我的數據庫名稱中作爲我的日誌文件名。這使我的最大限度124。 – 2011-02-23 20:19:07

3

您是否遇到數據和日誌文件的文件名的問題。底層操作系統(Windows)對其進行限制,因此無法創建數據庫。數據庫名稱的長度可能爲128個字符,因爲所使用的文件名不會太長(當使用SQL Server Management Studio時,它會根據數據庫名稱自動生成文件名,因此最終會變長)。