2012-03-07 3 views
1

Я получаю сообщение об ошибке при подключении к sql из моего файла cs. Я пытаюсь создать CLR-функции в C# без использования какой-либо IDE, которая является требованием. Мне нужно получить доступ к базе данных, чтобы получить некоторую ценность. Ниже приведен код для подключения к моей базе данных в C#.Требуемая операция требует sql clr context

using (SqlConnection conn = new SqlConnection("context connection=true")) 
{ 
    conn.Open(); 
    SqlCommand cmd = new SqlCommand(
     "SELECT COUNT(*) AS 'Order Count' FROM customer_master with (nolock)", conn); 
    SqlContext.Pipe.ExecuteAndSend(cmd); 
    return (int)cmd.ExecuteScalar(); 

} 

, но я получаю следующее сообщение об ошибке:

«Запрошенная операция требует контекст SQLCLR, который доступен только при работе в процессе Sql Server». Если я использую pipe, я не знаю, как его преобразовать в значение int. Любые предложения, пожалуйста ....

+0

Является ли ваше заявление SQL само по себе? Мне показалось, что я где-то читал, что MySQL не поддерживает «WITH». – Aaron

+1

Именно поэтому я понимаю, вы пытаетесь использовать SQL CLR с MySQL? Почему вы хотите это сделать? –

+0

Я не думаю, что это mysql, @ user1031746 Вы имели в виду MS SQL? – DaveShaw

ответ

1

По состоянию на this Blog сообщение, попробуйте вот так, с SQLConnection не в использовании. SQLCommand является одноразовым и должен быть включен.

SqlConnection conn = new SqlConnection("context connection=true") ; 
using(SqlCommand cmd = new SqlCommand( 
     "SELECT COUNT(*) AS 'Order Count' FROM customer_master with (nolock)", conn)) 
{ 
    conn.Open(); 
    return (int)cmd.ExecuteScalar();  
} 

я написал ниже первого, но я думаю, что выше ответ, я уезжаю вычеркнул в случае уместно.


A ContextConnection является соединение вниз по существующей связи, что SQL вызова функции CLR использует. Чтобы использовать функцию CLR SQL с ContextConnection, вам необходимо вызвать ее из SQL-запроса.

например. (где CLRConvert - это моя функция CLR, которая соединяется с моей базой данных и выполняет запрос и преобразует материал).

select dbo.CLRConvert(Data) from MyTables; 

Если вам нужно вызвать его вне здесь, вы будете нуждаться в надлежащей connection string.

Смежные вопросы