我需要从sql server检索SQL服务器的默认路径。我知道应该工作的事情:
declare @dir nvarchar(4000)
exec master.dbo.xp_instance_regread
N'HKEY_LOCAL_MACHINE',
N'Software\Microsoft\MSSQLServer\Setup',
N'SQLPath',
@dir output
select @dir
现在我关注的是名称用于从.NET调用此存储过程的参数
Using sqlConn As New SqlConnection(connectionstring)
Using cmd As New SqlCommand("xp_instance_regread", sqlConn)
Parameter= New SqlParameter("@THE_FIRST_PARAMETER"...
我怎么能得到它?是否有一些存储过程,如sp_help,但提供有关sqlparameters的详细信息? 谢谢。
答案 0 :(得分:3)
我将添加正在运行的代码,以防万一有人需要它:)
Public Shared Function GetSqlPath(ByVal connectionstring As String) As String
Dim rowCount = 0
Using sqlConn As New SqlConnection(connectionstring)
Using cmd As New SqlCommand("xp_instance_regread", sqlConn)
cmd.CommandType = CommandType.StoredProcedure
Dim parameterRootKey As New SqlParameter With {.SqlDbType = SqlDbType.NVarChar,
.ParameterName = "@rootkey",
.Size = 128,
.Direction = ParameterDirection.Input, .Value = "HKEY_LOCAL_MACHINE"
}
Dim parameterKey As New SqlParameter With {.SqlDbType = SqlDbType.NVarChar,
.ParameterName = "@key",
.Size = 128,
.Direction = ParameterDirection.Input,
.Value = "SOFTWARE\Microsoft\MSSQLSERVER\Setup"
}
Dim parameterValueName As New SqlParameter With {.SqlDbType = SqlDbType.NVarChar,
.ParameterName = "@value_name",
.Size = 128,
.Direction = ParameterDirection.Input, .Value = "SQLPath"
} '
Dim parameterValue As New SqlParameter With {.SqlDbType = SqlDbType.NVarChar,
.ParameterName = "@value",
.Size = 128,
.Direction = ParameterDirection.Output
}
cmd.Parameters.Add(parameterRootKey)
cmd.Parameters.Add(parameterKey)
cmd.Parameters.Add(parameterValueName)
cmd.Parameters.Add(parameterValue)
sqlConn.Open()
cmd.ExecuteNonQuery()
Return CType(parameterValue.Value, String)
End Using
End Using
答案 1 :(得分:1)
即使在线有一些信息,xp_instance_regread
也没有记录,这意味着使用它有风险:新的服务包可能会完全改变它。
“默认路径”(指向什么路径?)的含义并不完全清楚,但SMO Server
和Information
类具有所有“明显”路径的属性需要。在这种情况下,我认为你问的是RootDirectory
property。