SQL Server相关知识和经验的碎片化记录

1、在向服务器发送请求时发生传输级错误

   在向服务器发送请求时发生传输级错误。 (provider: TCP 提供程序, error: 0 - 远程主机强迫关闭了一个现有的连接。) ---> System.Data.SqlClient.SqlException: 在向服务器发送请求时发生传输级错误。
  开始一直以为是网络连接的问题,最后发现是数据库连接字符串的问题

  之前的数据库连接字符串为:

       "server= server ;database=database ;uid= uid  ;pwd= pwd";
       后来修改为:
       "server= server ;database=database ;uid= uid  ;pwd= pwd;pooling=false";

       加了pooling=false  这个设置,就解决OK了!
问题是由于.net跟sql server进行连接得时候,某个连接池等资源已经用尽了,或者说是达到了最大得连接数,因此我们在出现错误的前面加上一句话:SqlConnection.ClearAllPools()

2、取表中的随机记录

SELECT TOP 1 * FROM [Table] WHERE nImageType=1 ORDER BY NEWID()

3、存储过程中游标的标准写法(遍历记录)

复制代码
DECLARE CURSOR_ItemDetail CURSOR FOR SELECT sItemID FROM [dbo].[f_getXmlDetail]()  WHERE [sTaskID]=@sTaskID            
OPEN CURSOR_ItemDetail
FETCH NEXT FROM CURSOR_ItemDetail INTO @sItemID
WHILE @@FETCH_STATUS = 0
  BEGIN
    FETCH NEXT FROM CURSOR_ItemDetail INTO @sItemID
  END
CLOSE CURSOR_ItemDetail
DEALLOCATE CURSOR_ItemDetail
复制代码

4、字符串拆分函数(循环截取),并返回表变量

复制代码
ALTER FUNCTION [dbo].[f_splitSTR](
@s   varchar(8000),  --待分拆的字符串
@split varchar(10)   --数据分隔符
)
RETURNS @re TABLE(col nvarchar(MAX))
AS
BEGIN
 DECLARE @splitlen int
 SET @splitlen=LEN(@split+'a')-2
 WHILE CHARINDEX(@split,@s)>0
     BEGIN
        INSERT @re VALUES(LEFT(@s,CHARINDEX(@split,@s)-1))
        SET @s=STUFF(@s,1,CHARINDEX(@split,@s)+@splitlen,'')
     END
 INSERT @re VALUES(@s)
 RETURN
END
复制代码

......

posted @   飞仔FeiZai  阅读(512)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 百万级群聊的设计实践
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
点击右上角即可分享
微信分享提示