当前位置: 移动技术网 > IT编程>数据库>MSSQL > SQL Server 数据库部分常用语句小结(二)

SQL Server 数据库部分常用语句小结(二)

2018年11月11日  | 移动技术网IT编程  | 我要评论

满城二手房信息,伯妮丝,木井村

9. 查询备份还原数据库的进度。

select command
,percent_complete
,est_time_to_go=convert(varchar,(estimated_completion_time/3600000))+' hour, '
+convert(varchar,(estimated_completion_time)/60000)+' min, '
+convert(varchar,(estimated_completion_time)/1000)+' sec'
,start_time=convert(char(16),start_time,120)
,est_completion_time=convert(char(16),dateadd(second,estimated_completion_time/1000,getdate()),120)
,running_time=convert(varchar,((datediff(s,start_time,getdate()))/3600))+' hour, '
+convert(varchar,(datediff(s,start_time,getdate()))/60)+' min, '
+convert(varchar,(datediff(s,start_time,getdate())))+' sec'
,s.text
from sys.dm_exec_requests r
cross apply sys.dm_exec_sql_text(r.sql_handle) s
where r.command in ('backup database','restore database','backup log','restore log','dbccfilescompact','dbccspacereclaim')

10. 删除指定表内的某个统计信息(例如,有时候,我们在alwayson可用性组的副库上执行某个查询,会提示某个统计信息缺失)。

语法

drop statistics table.statistics_name | view.statistics_name [ ,...n ]

11. sql server 2012 关于序列 的基本操作【在对应db下执行】。

select * from sys.sequences

-- 获取下一个值
select next value for [dbo].[自定义的序列名称];

-- 重置为1
alter sequence [dbo].[自定义的序列名称] restart with 1 ;

12. 自增列(identity(1,1))的数据导入。

2个表都有自增列(identity(1,1)),怎么才能导入数据呢?
例如,我想将含有identity(1,1)列的大表qq_camptask_t1,rename成一张旧表qq_camptask,接下来还要把其中部分数据导入到新建的qq_camptask_t1 中,新产生的表还是有identity(1,1),此时导入数据,这个列就会报错。
消息 8101,级别 16,状态 1,第 1 行
仅当使用了列列表并且 identity_insert 为 on 时,才能为表qq_camptask_t1'中的标识列指定显式值。

解决方案
set identity_insert qq_camptask_t1【表名】 on
此效用就在同一个回话中有效,其它不行。另外 还需要特别注意的是:一定要写明 列名。

例如:

set identity_insert qq_camptask_t1 on
insert into qq_camptask_t1 ([id],[createtime])
select [id],[createtime] from qq_camptask

13. 修table的改列名。

exec sp_rename '表名.[原列名]', '新列名', 'column'

14. 赋予指定账户查看执行计划的权限。

grant showplan to [xxx_test] ---账号是xxx_test;在指定数据库下执行

15. sql语句执行耗费资源统计分析。

set statistics profile on
set statistics io on
set statistics time on
go
--写sql语句的地方

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

go
set statistics profile off
set statistics io off
set statistics time off

16. 增加约束:如果表的某一列没有约束,而要在此列增加约束。

类似命令 如下:
alter table [dbo].[表明] add default ((默认值)) for [列名]

17. sqlserver 服务器更改主机名后,需要做一些操作,不然维护计划 以及订阅发布都会有问题。有时修改计算机名后,执行select @@servername仍返回原来的计算机名,表示"实例"并没有随着修改。

use master;
go
if serverproperty('servername')<>@@servername
begin
declare @server sysname;
set @server=@@servername;
exec sp_dropserver @server=@server;
set @server=cast(serverproperty('servername')as sysname );
exec sp_addserver @server=@server,@local='local';
end
go

(我们重启一下服务.ok)

18. 出现性能瓶颈时,执行以下代码,检查瓶颈代码。

sp_lock
dbcc inputbuffer(xxx) ---xxx 出现多次的spid

19查询表的大小

sp_spaceused 'rel_orderitem'

20. 字符与ascii码相互转化,有的时候要对数据清理,所以有必要了解一下。

例如 char("9") tab(水平制表符)
char("10") 换行
char("11") tab(垂直制表符)
char("12") 换页
char("13") 回车 chr(13)&chr(10) 回车和换行的组合
char("32") 空格 space

(1)获取字符的ascii码 ascii
ascii码是对字符的标准编码。要获取字符的ascii码可以通过ascii函数来实现。
语法:ascii(espression)--这里的expression是一个返回char或varchar数据类型的表达式,ascii函数仅对表达式最左侧的字符返回ascii码值。
例如:select ascii('f') --输出 102
(2)获取ascii码对应的字符 char
语法:char(integer_expression)
例如:select char(102) -- 输出f

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网