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