我有一個腳本在我的SQL Server數據庫中運行存儲過程,問題是存儲過程需要一個uniqueidentifier參數。我有一個從數據庫中獲取會話ID的函數(它是一個nvarchar),所以VBScript使它成爲一個字符串,我需要將其轉換爲將它傳遞給存儲過程。將字符串轉換爲VBScript中的uniqueidentifier
Function GetOpenSession
Set conn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
conn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Data Source=" & Source
rs.CursorLocation = 3
rs.Open "SELECT top 1 OpenSession FROM OpenSessions with (nolock)" , conn, 3, 3
If rs.RecordCount = 0 Then
MsgBox "No Connection"
Else
GetOpenSession = rs.Fields(0).Value
End If
End Function
當我嘗試執行存儲過程時,得到「無效的轉換規範字符值」。
set cnParam = cmd.CreateParameter("@ActiveSession",72,1,,GetOpenSession)
cmd.Parameters.Append cnParam
我無法更改數據庫中的任何內容,所以我需要一種方法在腳本中解決這個問題。
你怎麼知道,「選擇頂層1的openSession FROM OpenSessions與(NOLOCK)」將給你活躍的會議?無論代表哪個會話,您只需選擇第一個OpenSession值。 – 2009-01-21 20:37:15
存儲在此表中的唯一會話是活動會話,因此使用哪一個並不重要。 – Tester101 2009-01-21 20:42:47
嗯......好吧,但是如果你不關心你傳遞給proc的活動會話ID,它聽起來像是一個奇怪的架構。 – 2009-01-21 20:49:10