SqlPipe does not support executing a command with a connection, 如何返回结果集.

czyoooo 2011-08-01 05:10:54
消息 6522,级别 16,状态 1,过程 MyCLR,第 0 行
在执行用户定义例程或聚合 "MyCLR" 期间出现 .NET Framework 错误:
System.InvalidOperationException: SqlPipe does not support executing a command with a connection that is not a context connection.
System.InvalidOperationException:
at Microsoft.SqlServer.Server.SqlPipe.ExecuteAndSend(SqlCommand command)
at StoredProcedures.MyCLR(String airway, String travelline, String humankind, String policyType)



[Microsoft.SqlServer.Server.SqlProcedure]
public static void MyCLR(string airway, string travelline,string humankind,string policyType )
{
using (SqlConnection conn = new SqlConnection(@"server=192.168.1.100\\NEW,1433;uid=sa;pwd=sa;database=MyDB"))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
cmd.CommandText = string.Format(" select top 1 tax-ceiling(convert(real,qvalue)*convert(real,roe)/10)*10 as tax,0 as qprice from Mytax "
+ "where travelline='{0}' and airway='{1}' and "
+ " humankind='{2}'and created>=dateadd(day,-3,getdate()) order by created desc", airway, travelline, humankind, policyType);
SqlContext.Pipe.ExecuteAndSend(cmd);
conn.Close();
}
}



server=192.168.1.100\\NEW,1433;uid=sa;pwd=sa;database=MyDB远程电脑DB.
...全文
67 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2011-08-01
  • 打赏
  • 举报
回复
数据库版本是什么??.NET是不是3.5?
czyoooo 2011-08-01
  • 打赏
  • 举报
回复
public static void MyCLR(string airway, string travelline,string humankind,string policyType )
{
using (SqlConnection conn = new SqlConnection(@"server=192.168.1.100\\NEW,1433;uid=sa;pwd=sa;database=MyDB"))
{
conn.Open();
string sqlCmd = string.Format(" select top 1 tax-ceiling(convert(real,qvalue)*convert(real,roe)/10)*10 as tax,0 as qprice from Mytax "
+ "where travelline='{0}' and airway='{1}' and "
+ " humankind='{2}'and created>=dateadd(day,-3,getdate()) order by created desc", airway, travelline, humankind, policyType);

SqlCommand cmd = new SqlCommand(sqlCmd, conn);

SqlDataAdapter dap = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
dap.Fill(ds, "MyTable");
DataTable dt = ds.Tables["MyTable"];

SqlDataRecord dr = new SqlDataRecord(new SqlMetaData[] {
new SqlMetaData("tax", SqlDbType.NVarChar, 500),
new SqlMetaData("qvalue", SqlDbType.NVarChar, 500)
});

SqlContext.Pipe.SendResultsStart(dr);

for (int i = 0; i <= dt.Rows.Count - 1; i++)
{
dr.SetString(0,dt.Rows[i][0].ToString());
dr.SetString(1, dt.Rows[i][1].ToString());
SqlContext.Pipe.SendResultsRow(dr);
}
SqlContext.Pipe.SendResultsEnd();

conn.Close();
}


System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
System.Data.SqlClient.SqlException:
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection owningObject)
at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)
at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnec...



测试连接字符串肯定没有问题,远程连接都是可以的.

快溜 2011-08-01
  • 打赏
  • 举报
回复
a connection that is not a context connection.
连接失败
AcHerat 2011-08-01
  • 打赏
  • 举报
回复
SqlPipe does not support executing a command with a connection that is not a context connection.

这儿已经说明问题了吧!pipe估计不行。
-晴天 2011-08-01
  • 打赏
  • 举报
回复
用 记录集对象.

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧