继续总结SQL SERVER的一些常用知识:
10.java事务和存储过程事务冲突的解决方法-事务点
declare @INIT_TC int
select @INIT_TC=@@TRANCOUNT
set XACT_ABORT ON --设置下面
if @INIT_TC = 0
begin transaction xxxxxxxx
else
save transaction xxxxxxxx
code........
commit transaction xxxxxxxx
return 0
Error:
rollback transaction xxxxxxxx
11.分布式查询开游标设置INSENSITIVE
Declare xxxx INSENSITIVE Cursor For ........
如不设置INSENSITIVE,报远程表不可更新。远程表上的可更新键集驱动游标要求事务具有扫过游标的 REPEATABLE_READ 或 SERIALIZABLE 隔离级别。
远程表上的游标不可更新,游标的敏感性行为定义了对基行(用于建立游标)所做的更新是否对游标可见。敏感性也定义了能否通过游标进行更新。
12.禁用/开启 所有触发器
--禁用所有表所有触发器
exec sp_msforeachtable 'ALTER TABLE ? DISABLE TRIGGER ALL'
--开启所有表所有触发器
exec sp_msforeachtable 'ALTER TABLE ? ENABLE TRIGGER ALL'
13.禁用/启用 所有约束
--禁用所有外键约束
sp_msforeachtable "alter table ? nocheck CONSTRAINT all"
--启用所有外键约束
sp_msforeachtable "alter table ? check constraint all"
14.查看常用对象
--查看所有的触发器
select a.name as TableName, b.name as TriggerName from sysobjects a,sysobjects b where b.parent_obj=a.id and a.xtype = 'U' and b.xtype = 'Tr'
--查看所有的视图
select name from sysobjects where type= 'V' and name <> 'syssegments' and name <> 'sysconstraints'
--查看所有的存储过程
select name from sysobjects where xtype='P'
--查看所有的函数
select name from sysobjects where xtype='FN'
--查看所有的表
select name from sysobjects where xtype='U'
--查看所有的外键约束
select name from sysobjects where xtype='F'
15.查看表的详情
exec sp_help '表名'
16.--修改数据库的名称
sp_renamedb '旧库名', '新库名'
17.--查看与某一个表相关的视图、存储过程、函数
select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%'
18.--比较两表是否相等
if (select checksum_agg(binary_checksum(*)) from 表名1)=(select checksum_agg(binary_checksum(*)) from 表名2)
select '相等'
else
select '不等'
19.复制表结构
select top 0 * into 新表名 from 旧表名
使用这种方法插入临时表速度非常快
select * into #临时表名 from 表名
20.列出全部当前进程(当前连接数)
EXEC sp_who
21.sqlserver中的命令行shell
exec master.dbo.xp_cmdshell 'osql -U sa -P 密码 -i c:/脚本.sql -d 库名'