Как я могу подключиться к двум разным серверам в зависимости от параметра.
I created an application in VB-2012 that connects to two servers and executes stored procedures depending on what button is clicked on the UI. I created both of my connections as follows; Public Class xxx Dim cServer As String = "Server1" Dim cConnStr As String = "Server=SQL1;database=mast1;User ID=ts;Password=xxxx" Dim conn As New SqlConnection(cConnStr) Dim sqlCmd As SqlCommand = conn.CreateCommand Dim cConStrIT2 As String = "Server=SQL2;database=mast2;User ID=ts;Password=xxxx" Dim conIT2 As New SqlConnection(cConStrIT2) Dim sqlcmdIT2 As SqlCommand = conIT2.CreateCommand '****** Execute SProc from server 1 Private Sub btnErr32_Click(sender As System.Object, e As System.EventArgs) Handles btnErr32.Click sqlCmd = New SqlCommand("sp_EDI_INLOAD_ERROR0032 @batchid, @membID", conn) sqlCmd.Parameters.Add("@batchid", SqlDbType.NVarChar).Value = cBatchid sqlCmd.Parameters.Add("@membID", SqlDbType.NChar).Value = cMembIDPaidClm ExecuteSQL(nWhatMessage) 'execute the command' End Sub '****** Execute SProc from server 2 Private Sub btnPost(sender As System.Object, e As System.EventArgs) Handles btnPost.Click sqlcmdIT2 = New SqlCommand("exec sp_EDI_INLOAD_PROF_IT3 @batchid", conIT2) sqlcmdIT2.Parameters.Add("@batchid", SqlDbType.NVarChar).Value = cBatchid ExecuteSQLIT3(7) End Sub Private Sub ExecuteSQL(nMessage As Integer) conn.Open() dr = sqlCmd.ExecuteReader conn.Close() End Sub Private Sub ExecuteSQLIT3(nMessage As Integer) conIT2.Open() dr = sqlcmdIT2.ExecuteReader conIT2.Close() End Sub End Class This code works fine. An enhancement to the application. The first connection to a server can be one of two servers (1 or 3), depending on the parameter that will be passed. The second connection will remain as is. I made the following changes listed below. I capture the parameter and i process the correct connections string but when the code gets to the ExecuteSQL subs, i get a few different error messages. Below is what i tried to do.
Что я уже пробовал:
Public Class xxx Dim cConnStr As String Dim cServer As String Dim cWhatServer As String() = Environment.GetCommandLineArgs() Dim sqlCmd As SqlCommand Dim conn As New SqlConnection() Private sub TS_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load cWhatServer = Environment.GetCommandLineArgs() If cWhatServer.Length > 1 Then cServer = cWhatServer(1) "SRV1" Else cServer = "SRV3" End If If cServer = "SRV1" Then cConnStr = "Server=SQL1;database=mast1;User ID=ts;Password=xxxx" Else cConnStr = "Server=sQL3;database=mast3;User ID=ts;Password=xxxx" End If conn = New SqlConnection(cConnStr) sqlCmd = conn.CreateCommand End Sub '****** Execute SProc from server 1 or Server 3 Private Sub btnErr32_Click(sender As System.Object, e As System.EventArgs) Handles btnErr32.Click sqlCmd = New SqlCommand("sp_EDI_INLOAD_ERROR0032 @batchid, @membID", conn) sqlCmd.Parameters.Add("@batchid", SqlDbType.NVarChar).Value = cBatchid sqlCmd.Parameters.Add("@membID", SqlDbType.NChar).Value = cMembIDPaidClm ExecuteSQL(nWhatMessage) 'execute the command' End Sub '****** Execute SProc from server 2 Private Sub btnPost(sender As System.Object, e As System.EventArgs) Handles btnPost.Click sqlcmdIT2 = New SqlCommand("exec sp_EDI_INLOAD_PROF_IT3 @batchid", conIT2) sqlcmdIT2.Parameters.Add("@batchid", SqlDbType.NVarChar).Value = cBatchid ExecuteSQLIT3(7) End Sub Private Sub ExecuteSQL(nMessage As Integer) conn.Open() dr = sqlCmd.ExecuteReader conn.Close() End Sub Private Sub ExecuteSQLIT3(nMessage As Integer) conIT2.Open() dr = sqlcmdIT2.ExecuteReader conIT2.Close() End Sub End Class
David_Wimbley
"Я захватываю параметр и обрабатываю правильную строку соединений, но когда код попадает в субподряд ExecuteSQL, я получаю несколько различных сообщений об ошибках. Ниже приводится то, что я пытался сделать."
И какие сообщения об ошибках вы получили? Мы не можем воспроизвести ваши ошибки, не имея доступа к вашим серверам, так что это не так уж много.
Member 11318400
Привет Дэвид,
сообщение об ошибке, которое продолжает отображаться, является
"Не удалось найти хранимую процедуру 'sp_EDI_INLOAD_ERROR0032'."
И это происходит, когда я пытаюсь выполнить dr = sqlcmd.Команда ExecuteReader.
Также обратите внимание, что когда я добавлял свой код на эту страницу, Я забыл включить
Дим ДР в качестве объекта sqldatareader. Этот тусклый оператор действительно существует в моем коде.
Спасибо за Ваш быстрый ответ.