我有一个脚本在我的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