SqlServer相关

本文展示了SQLServer中的几个关键操作,包括查询数据库连接详情、使用`ROWCOUNT`、处理临时表的无序问题、字符集转换以及生成随机ID。此外,还讨论了在存储过程中处理XML数据的挑战和解决方案,如通过非XML格式传输数据。
摘要由CSDN通过智能技术生成

Shell命令:

net use /?

COPY /?

Del /?

Bcp /?

– 查询数据库连接详细信息

SELECT top 100 *

FROM sys.dm_exec_connections AS c

JOIN sys.dm_exec_sessions AS s

ON c.session_id = s.session_id

exec 不影响 @@ROWCOUNT

-- exec 不影响 @@ROWCOUNT

declare @SqlStr varchar(max)=''

select *  from _test where No = 666

Set @SqlStr = 'if 1=1 begin insert into _test select 666, ''ddd'' end'

exec(@SqlStr)

Select @@ROWCOUNT

select * from _test where No = 666

Set @SqlStr = 'if 1<>1 begin insert into _test select 666, ''aaa'' end'

exec(@SqlStr)

Select @@ROWCOUNT

select * from _test where No = 666

 

declare @SqlStr2 nvarchar(max)=''

select * from _test where No = 666

Set @SqlStr2 = 'if 1=1 begin insert into _test select 666, ''ddd'' end'

exec sp_executesql @SqlStr2

Select @@ROWCOUNT

select * from _test where No = 666

Set @SqlStr2 = 'if 1<>1 begin insert into _test select 666, ''aaa'' end'

exec sp_executesql @SqlStr2

Select @@ROWCOUNT

select * from _test where No = 666

解决SQLserver临时表无序问题

https://www.jb51.net/article/204331.htm

– 如果有特殊的需要, 要求临时表里面的数据有序, 则可以通过创建聚集索引来解决塞入数据的无序问题

遇到类似Invalid column name ‘XXXXX’.的问题

1.在if-else判断语句内创建临时表

2.外层SP与内层SP共用一个临时表名称 (内层SP报错, 被外层Sp catch到, 需要调试到准确位置)

字符集转换

   A.Column_Name原本是其他字符集

   A . Column_Name COLLATE SQL_Latin1_General_CP850_CI_AS

创建随机的ID

NEWID()

以下示例使用 NEWID() 对声明为 uniqueidentifier 数据类型的变量赋值。 在测试 uniqueidentifier 数据类型变量的值之前,先打印该值。

DECLARE @myid uniqueidentifier 

SET @myid = NEWID() 

PRINT 'Value of @myid is: '+ CONVERT(varchar(255), @myid) 

–下面是结果集。

–Value of @myid is: 6F9619FF-8B86-D011-B42D-00C04FC964FF

SP查询连接属性 ConnectionProperty(‘client_net_address’)

SQL Server

远程SP调用不能直接传输XML格式的数据

如:

-- 1.1.1.1中有SP:

Create procedure Set_Data(

@XmlData xml

) AS

create table #_Test(

    FuncType varchar(50)

    ,SendData varchar(100)

)

  

insert into #_Test

    Select [No] = Cast(x.item.query('data(FuncType)') As varchar(50)),

        A = Cast(x.item.query('data(SendData)') As varchar(100))

        from @XmlData.nodes(N'/XMLData/xmlRows') x(item)

 

insert into _Test

    select CAST(FuncType as int), SendData from #_Test

-- 1.1.1.2中调用:

      Declare @XmlStr nvarchar(max) = '' -- 不能使用 xml 直接传输, 这里可以使用 [n]varchar(max) 或 varbinary(max)

   Set @XmlStr = (select * from #Temp for xml path('xmlRows'), root('XMLData'))

   Exec [1.1.1.1].[DB_Name].[dbo].[Set_Data] @XmlStr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值