Я могу легко получить информацию о заданиях агента SQL сервера с помощью следующей TSQL:Операнд Тип данных Clash при выполнении sp_help_job с помощью VB.Net
sp_help_job @job_id=null, @job_name='<My Job Name>',@job_aspect='JOB'
Однако, когда я пытаюсь выполнить эту систему хранимой процедуру в vb.net я получаю сообщение об ошибке коллизий типа данных:
cmd = New OleDb.OleDbCommand("sp_help_job", jobConnection)
cmd.CommandType = CommandType.StoredProcedure
''job id value should be set to null - we will filter on the job name...
p1 = New OleDb.OleDbParameter("@Job_id", SqlDbType.UniqueIdentifier)
p1.Direction = ParameterDirection.Input
p1.Value = vbNull
cmd.Parameters.Add(p1)
''job name paramter is the currently running interface, strCurrentPackage...
p2 = New OleDb.OleDbParameter("@job_name", SqlDbType.NVarChar)
p2.Direction = ParameterDirection.Input
p2.Value = strCurrentPackage
cmd.Parameters.Add(p2)
''job aspect value = "JOB" to get only the job info result set...
p3 = New OleDb.OleDbParameter("@job_aspect", SqlDbType.NVarChar)
p3.Direction = ParameterDirection.Input
p3.Value = "JOB"
cmd.Parameters.Add(p3)
jobReader = cmd.ExecuteReader()
ошибка «тип Операнд столкновение: INT несовместима с UniqueIdentifier». Я не уверен, откуда int, мой код не использует какие-либо типы данных int, а все типы данных параметров соответствуют ожидаемой системной хранимой процедуре.
Пара примечаний по коду: Я использую OLEDB, потому что моя строка соединения передается мне как соединение OLEDB. Я также подключаюсь к базе данных MSDB.
Это может быть связано с тем, что в настоящее время JobID разобранного как 'int' типа данных, и вы его определяется как' UniqueIdentifier 'в строке 4. Попробуйте изменить' SqlDbType.UniqueIdentifier' на 'SqlDbType.Int' – Phoenix
На основе документации это должен быть уникальный идентификатор: https://msdn.microsoft.com/en-us/library/ms186722.aspx , Я попытался установить строку 4 на тип данных int, но это не работает; Я получаю ту же ошибку. – bsivel
Вы правы, это должен быть уникальный идентификатор. Интересно, связано ли это с тем, как вы передаете значение. Я буду продолжать исследования. – Phoenix