2012-03-07 8 views
1

私のcsファイルからsqlに接続する際にエラーが発生します。私は、C#でCLR関数を作成しようとしています。私はいくつかの価値を得るためにデータベースにアクセスする必要があります。以下は、C#でデータベースに接続するコードです。要求された操作にはsql clrコンテキストが必要です

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(); 

} 

が、私は次のエラーを取得しています:

「要求された操作は、SQL Serverプロセスで実行している場合にのみ利用可能である、SQLCLRコンテキストが必要です」。私はパイプを使用する場合、私はint値に変換する方法を知らない。どんな提案もお願いします....

+0

独自のSQL文は機能しますか?私は、MySQLが "WITH"をサポートしていないところで読むことを思い出したと思いました。 – Aaron

+1

MySQLでSQL CLRを使用しようとしています。なぜあなたはそれをしたいのですか? –

+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(); } 

は、私は以下の最初に書いたが、私はそれが関連している場合には三振残している、上記の答えだと思います。


ContextConnectionバックCLR関数を呼び出すSQLが使用している既存のオープン接続ダウン接続です。 ContextConnectionでSQL CLR関数を使用するには、SQLステートメント内から呼び出す必要があります。

CLRConvertは、自分のデータベースに接続してクエリを実行してものを変換するCLRの機能です)。

select dbo.CLRConvert(Data) from MyTables; 

あなたはここの外にそれを呼び出す必要がある場合、あなたは適切なconnection stringが必要になります。

関連する問題