sqlserver向下兼容性。。。差的要死,在高版本sql上的备份在低版本根本不能恢复
1 安装时不断需要重启
删除注册表键HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations,然后再试一下
2 停止sqlserver2008 r2 后,发现无法启动
cmd
net start mssqlserver
net stop mssqlserver
3 一些sql
时间与字符串:
print getdate() //打印当前时间
convert(datetime, '2014-07-01 12:10:01.123', 120)// 将字符串转换为datetime,120代表时间格式
CONVERT(varchar(10),replace('"123"345"',‘"’,'')) // 先将字符串的 双引号” 去掉,然后将字符串截断取前10个
SELECT STUFF('ABCDE',3,1,' ') 将第三位 C改为空格
//先将所有的双引号替换为 空,和将” . “替换为” : “,将11位的 ” - “替换为空,将18位的” : “ 替换为 ” . “。
最后将的到的字符串转换为,datetime2(7) ,注意18 位被改为 ” : “要改回 ” . “,否则 7位小数的datetime2 将转换失败
print (convert (datetime2(7),STUFF( STUFF(replace(replace('2014-01-12-13.2.3.12345633','"',''),'.',':'),11,1,' '),18,1,'.'),120))
获取了表的列数:
select count(1) from syscolumns where id = object_id('tableName')
获取记录的条数:
方法一:最慢(数据几百万条,慎用)
select count(*) as c from tableA
方法二:
你希望相对快速地得到精确的表的记录总数,那么你有两种选择,建 聚簇索引 或者先 DBCC 再使用上述方法。
MS SQL 数据库中每个表都在sysindexes 系统表中拥有至少一条记录,该记录中的rows 字段会定时记录表的记录总数。
但是sysindexes中的数据是定时更新的,所以不一定和当前的表的数目相同
获取数据库内,所有表的记录数目
use dbname
select id,object_name(id) as tableName,indid,rows,rowcnt from sys.sysindexes where indid in(0,1)
获取指定表的列
select rows from sysindexes where id = object_id( 'tableName' ) and indid in (0,1)
强制将当前的记录总数更新到sysindexes
DBCC UpdateUSAGE(gd_fee0804,[tb_road]) WITH ROW_COUNTS (没有执行成功。。。。)????
sqlserver建立索引
在表的属性列里面就有索引项,有单机按步骤走???????
回收内存
方法一:重启,可以写成bat文件,然后在windows定时任务中,定时执行
net stop mssqlserver
net stop sqlserveragent
net start mssqlserver
将mysql的数据导入sqlserver总是乱码错误(终极方案)
1 先用Utroedit将字段转码为:unicode
2 bulk insert dbo.tb_spider_traffic from "d:\xxxxxx.txt"
with (FIELDTERMINATOR ='\t') //用‘\t’作为换行符
OK
举例:
2 多个表查找相同的结果进行合并,Union 去重,union all不去重
select * from B