您的位置:首页 > 数据库

常用sql 语句

2008-10-22 14:12 239 查看
死锁查询过程

use master

go

declare @spid int,@bl int

DECLARE s_cur CURSOR FOR

select 0 ,blocked

from (select * from sysprocesses where blocked>0 ) a

where not exists(select * from (select * from sysprocesses where blocked>0 ) b where a.blocked=spid)

union

select spid,blocked from sysprocesses where blocked>0

OPEN s_cur

FETCH NEXT FROM s_cur INTO @spid,@bl

WHILE @@FETCH_STATUS = 0

begin

if @spid =0

select '引起数据库死锁的是: '+ CAST(@bl AS VARCHAR(10)) + '进程号,其执行的SQL语法如下'

else

select '进程号SPID:'+ CAST(@spid AS VARCHAR(10))+ '被' + '进程号SPID:'+ CAST(@bl AS VARCHAR(10)) +'阻塞,其当前进程执行的SQL语法如下'

DBCC INPUTBUFFER (@bl )

FETCH NEXT FROM s_cur INTO @spid,@bl

end

CLOSE s_cur

DEALLOCATE s_cur

=============================================

--创建链接服务器

exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','10.1.1.22'

--带端口的连接

-- exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','10.1.1.22,5600'

exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'shise','06_Shi$kbZxsE'

go



--查询示例

select * from srv_lnk.数据库名.dbo.表名



--导入示例

select * into 表 from srv_lnk.数据库名.dbo.表名



go

--以后不再使用时删除链接服务器

exec sp_dropserver 'srv_lnk','droplogins'

==============================================

print 'next month:'

print dateadd(month,datediff(month,0,getdate())+1,0)

print 'previous month:'

print dateadd(month,datediff(month,0,getdate())-1,0)

print 'local month tom:'

print dateadd(ms,-3,dateadd(month,datediff(month,0,getdate())+1,0))

print 'local month up:'

print dateadd(month,datediff(month,0,getdate()),0)

print 'Today: from'

print dateadd(day,datediff(day,0,getdate()),0)

print 'to:'

print dateadd(ms,-3,dateadd(day,datediff(day,0,getdate())+1,0))

print convert(varchar(20),getdate(),112)

==================================================================

sql查询

select * from OPENDATASOURCE('SQLOLEDB','Data Source=10.1.1.22;User ID=shise;Password=06_Shi$kbZxsE').shise.dbo.vipcustomer

excel查询

SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',

'Data Source="e:/test.xls";User ID=;Password=;Extended properties=Excel 5.0')...[sheet1$]

access查询

SELECT * FROM OpenDataSource ('Microsoft.Jet.OLEDB.4.0','Data Source="e:/test.mdb";User ID=;Password=')...tuser



EXEC master..xp_cmdshell 'bcp test.dbo.tusers out e:/Temp3.txt -c

-q -S"192.168.1.135" -U"sa" -P"hujie"' --参数:S 是SQL服务器名;U是用户;P是密码说明: 可以是各种格式文件,txt,xls等

SELECT * FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0','Text;HDR =Yes;DATABASE=e:/')...[test#txt]



批量插入从文本

BULK INSERT tusers

FROM 'e:/test.txt'

WITH (

FIELDTERMINATOR = ',',

ROWTERMINATOR = '/n'

)

==================================================================

事务

BEGIN TRANSACTION

.

if @@error<>0

ROLLBACK TRANSACTION

else

COMMIT TRANSACTION

==================================================================

select count(distinct mobil) from sms_mo

==================================================================

列出表结构

SELECT

表名=case when a.colorder=1 then d.name else '' end,

表说明=case when a.colorder=1 then isnull(f.value,'') else '' end,

序号=a.colorder,

标识=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,

主键=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in (

SELECT name FROM sysindexes WHERE indid in(

SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid

))) then '√' else '' end,

字段名=a.name,

类型=b.name,

占用字节=a.length,

长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'),

小数位=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),

允许空值=case when a.isnullable=1 then '√'else '' end,

默认值=isnull(e.text,''),

字段说明=isnull(g.[value],'')



--into Email_tablestru

FROM syscolumns a

left join systypes b on a.xusertype=b.xusertype

inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'

left join syscomments e on a.cdefault=e.id

left join sysproperties g on a.id=g.id and a.colid=g.smallid

left join sysproperties f on d.id=f.id and f.smallid=0

--where d.name=@tablename --如果只查询指定表,加上此条件

where d.name like 'Email%'

order by d.name,a.id,a.colorder

-------------------------------------------------------

print 'next month:'

print dateadd(month,datediff(month,0,getdate())+1,0)

print 'previous month:'

print dateadd(month,datediff(month,0,getdate())-1,0)

print 'local month tom:'

print dateadd(ms,-3,dateadd(month,datediff(month,0,getdate())+1,0))

print 'local month up:'

print dateadd(month,datediff(month,0,getdate()),0)

print 'Today: from'

print dateadd(day,datediff(day,0,getdate()),0)

print 'to:'

print dateadd(ms,-3,dateadd(day,datediff(day,0,getdate())+1,0))

print convert(varchar(20),getdate(),112)

print dateadd(day,datediff(day,0,getdate())+1,0)

--------------------------------------------------

declare @LastName varchar(20)

declare @FirstName varchar(20)

DECLARE Employee_Cursor CURSOR FOR

SELECT LastName, FirstName FROM Northwind.dbo.Employees

OPEN Employee_Cursor

FETCH NEXT FROM Employee_Cursor into @LastName,@FirstName

WHILE @@FETCH_STATUS = 0

BEGIN

pint @LastName

FETCH NEXT FROM Employee_Cursor into @LastName,@FirstName

END

CLOSE Employee_Cursor

DEALLOCATE Employee_Cursor
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: