您的位置:首页 > 数据库

sql server 常用命令总结

2010-12-23 13:47 190 查看
--设置用户访问数据库的形式

Alter database TestAA set SINGLE_USER with rollback immediate --设置单用户访问数据库
Alter database TestAA set RESTRICTED_USER with rollback immediate

RESTRICTED_USER 只允许 db_owner 固定数据库角色成员以及 dbcreatorsysadmin 固定服务器角色成员连接到数据库,不过对连接数没有限制。在 ALTER DATABASE 语句的终止子句所指定的时间范围内,所有数据库连接都将被断开。在数据库转换到 RESTRICTED_USER 状态后,不合格用户所做的连接尝试将被拒绝。

Alter database TestAA set MULTI_USER with rollback immediate --设置用户正常访问

--设置数据库恢复模式

sql 2008 不支持nolog 和 truncate_only 如果要截断日志的话,需要先把数据库搞成简单模型,然后在收缩日志,在改成完全模式。备份一次数据库。

Alter database set recovery {simple/full/bulk_logged}

dbcc shrinkfile('filename',10)

--导出数据到文本

--EXEC master..xp_cmdshell 'bcp "Select cdoc_id,csubject from cmsdbquery..tbl_article" queryout c:/DT.txt -c -SXXXXX -Usa -PXXXXX'

--跟踪脚本需要打开的选项

set statistics io on

set statistics profile on

set statistics time on

--释放过程高速缓存将导致重新编译某些部分

DBCC FREEPROCCACHE

--从缓冲池中删除所有清除缓冲区

不用关闭和重启服务器或者服务

DBCC DROPCLEANBUFFERS

--以报表形式显示有关过程高速缓存的信息

DBCC PROCCACHE

--显示指定表上的指定目标的当前分布统计信息

DBCC SHOW_STATISTICS ( table , target )

--从远程服务器打开数据库连接取数据

SELECT top 20 *
FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=xxx.xxx.xx.x,port;User ID=sa;Password=xxxxxxx'
).[product].dbo.tableaa

data source 好像不能有中括号,好多网友的opendatasource不能用就是这个原因

SELECT *
FROM OpenDataSource
('Microsoft.Jet.OLEDB.4.0',
'Data Source="c:/bbb.xls";User ID=;Password=;Extended properties=Excel 5.0')...[sheet1$]

文本的查询

文件必须是,号分割文件

HDR=YES 的时候,第一行被认为是字段名
HDR=NO 的时候,第一行被认为是数据

select * from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Text;HDR=NO;DATABASE=C:/' --c:/是目录
,aaa#txt) --文件名

BULK INSERT xxxx_trs.dbo.xxxx_day
FROM 'F:/BI_DsssDayAddin_cms_IN.csv'
WITH
(
FIELDTERMINATOR =',',
ROWTERMINATOR ='/n'
)

--查看sql版本

SELECT SERVERPROPERTY('productversion'),SERVERPROPERTY('productlevel'),SERVERPROPERTY('edition')

--初始化标识列

DBCC CHECKIDENT (ProductPicture, RESEED, 1)

--数据库2个比较常用的函数

DATABASEPROPERTY 返回数据库状态的值

select DATABASEPROPERTY(dbname, 'issingleuser') 返回数据库是不是单用户模式

HAS_DBACCESS ( 'database_name' )  

返回信息,说明用户是否可以访问指定的数据库

--T终端用户的人
Query user 查询当前登录用户
LogOff sessionid 注销会话
Tsdiscon sessionid 断开某个会话的连接
命令行下需要先建立一个ipc$会话

net use //10.168.0.21/c$ "XX" /user:administrator
query user /server 10.168.0.21
tsdiscon 2 /server 10.168.0.21

创建与删除SQL约束或字段约束。




SQL约束控制


1)禁止所有表约束的SQL


select 'alter table '+name+' nocheck constraint all' from sysobjects where type='U'




2)删除所有表数据的SQL


select 'TRUNCATE TABLE '+name from sysobjects where type='U'




3)恢复所有表约束的SQL


select 'alter table '+name+' check constraint all' from sysobjects where type='U'




4)删除某字段的约束


declare @name varchar(100)


--DF为约束名称前缀


select @name=b.name from syscolumns a,sysobjects b where a.id=object_id('表名') and b.id=a.cdefault and a.name='字段名' and b.name like 'DF%'


--删除约束


alter table 表名 drop constraint @name


--为字段添加新默认值和约束


ALTER TABLE 表名 ADD CONSTRAINT @name DEFAULT (0) FOR [字段名]




对字段约束进行更改


--删除约束


ALTER TABLE tablename


Drop CONSTRAINT 约束名


--修改表中已经存在的列的属性(不包括约束,但可以为主键或递增或唯一)


ALTER TABLE tablename


alter column 列名 int not null


--添加列的约束


ALTER TABLE tablename


ADD CONSTRAINT DF_tablename_列名 DEFAULT(0) FOR 列名


--添加范围约束


alter table tablename add check(性别 in ('M','F'))

--命令查看sql服务启动状态

xp_cmdshell 'sc query MSSQLSERVER |find "STATE"'

--查看对象的一些附加属性
查看某列是否是自增列

columnproperty(id , column ,IsIdentity) = 1

BCP导入倒出

EXEC master..xp_cmdshell 'bcp "select * from fetionwapcore.dbo.resource_news" queryout c:/resource_news.txt -c -t "|" -S 192.168.xx.xx/aadb -U wxx -P xx'

EXEC master..xp_cmdshell 'bcp "test.dbo.[User]" in c:/resource_news.txt -c -t "|" -S 192.168.xx.x -U sa -P pas'

--获得禁用所有外键约束的语句
select 'ALTER TABLE [' + b.name + '] NOCHECK CONSTRAINT ' + a.name +';' as 禁用约束
from sysobjects a ,sysobjects b
where a.xtype ='f' and a.parent_obj = b.id

--获得启用所有外键约束的语句
select 'ALTER TABLE [' + b.name + '] CHECK CONSTRAINT ' + a.name +';' as 启用约束
from sysobjects a ,sysobjects b
where a.xtype ='f' and a.parent_obj = b.id

--删除所有的外键

select 'alter table '+OBJECT_NAME(parent_obj)+ ' drop constraint '+name from sysobjects
where xtype = 'f'

--更改默认排序规则

use master
go

Alter database xxxxxx set SINGLE_USER with rollback immediate
go
alter database xxxxxx COLLATE Chinese_PRC_CI_AS

go
Alter database xxxxxx set MULTI_USER with rollback immediate

--超NB的文本合并脚本

for %f in (*.sql) do type %f >>c:/aa.txt

--判断一列是否是数字

select CONVERT(decimal,result) as a
from AnswerResults where result not like '%[^0-9]^.%'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: