『壹』 sql Server 存儲過程參數最大長度限制是多少
sqlserver中varchar最大長度是8000,但是可以使用varchar(max),可以達到2G。
關於解釋:
有var前綴的,表示是實際存儲空間是變長的,varchar,nvarchar
所謂定長就是長度固定的,當輸入的數據長度沒有達到指定的長度時將自動以英文空格在其後面填充,使長度達到相應的長度;而變長字元數據則不會以空格填充,比較例外的是,text存儲的也是可變長。
『貳』 sqlserver提示超過最大前綴
[DATABASENAME].[SCHEMANAME].[表/過程/函數/視圖...]
所以
select [DB1.new].dbo.getDeptNameByName('')
是正確的。
不跨DataBase就沒必要加完整前綴,
直接select dbo.getDeptNameByName('')
『叄』 對象 名稱 '161.135.129.108.s116133.dbo.mem_rePwd' 包含的前綴超出了最大限值。
你把伺服器ip地址和資料庫名都寫進存儲過程了,真有你的。
一般是先建立連接,在連接串中包含ip地址和資料庫名的。
在連接串中指定ip和資料庫名,不管是本地和外地都是一樣操作的啦。
『肆』 包含的前綴數目超過了最大值。最大值為 2
truncate和update 不能加連接名,可以用如下方法:
sql server 2005版本支持 rpc,即遠程exec
方法是:
exec ('某個字元串') at 連接名
比方說
exec('truncate table 庫名.dbo.表名') at 連接名
update方法類似
此外,select如果用你原來的寫法
select a,b,count(1) from 連接名.資料庫名.dbo.表名 group by a,b
實際上是把整個表取過來做group,這樣效率非常低
exec('select a,b,count(1) from 資料庫名.dbo.表名 group by a,b
') at 連接名
這樣是把腳本丟給那個伺服器運算,僅把結果取回來,這樣才是真正的分布式查詢
但是必須將該連接資料庫設置rpc許可權(可能會增加風險)
在連接資料庫-〉屬性-〉伺服器選項 中間可以設置,或者用腳本:
EXEC master.dbo.sp_serveroption @server=N'連接名', @optname=N'rpc', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'連接名', @optname=N'rpc out', @optvalue=N'true'
上述兩個是其中一個有效,但我記不得是哪個了,你可以試試
『伍』 SQL的語句最大長度限制多少字元
MSSQL SQL語句的最大長度是有限度的,對於varchar類型最多可以有8000個字元(varchar如果含中文字元,則一個中文字元要佔兩位),nvarchar類型最多可以接受4000個字元,超出限制長度的部分會被截掉,語句可能因此變得不完整而無法執行。