加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sqlserver安装使用

发布时间:2020-12-12 12:58:17 所属栏目:MsSql教程 来源:网络整理
导读:sqlserver向下兼容性。。。差的要死,在高版本sql上的备份在低版本根本不能恢复 1 安装时不断需要重启 删除注册表键HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerPendingFileRenameOperations,然后再试一下 2 停止sqlserver2008 r

sqlserver向下兼容性。。。差的要死,在高版本sql上的备份在低版本根本不能恢复


1 安装时不断需要重启

删除注册表键HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerPendingFileRenameOperations,然后再试一下


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,' '),18,'.'),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?

net start? ?sqlserveragent
方法二: 学习中
内存限制:在数据库的属性里面有,默认 2008r2支持2047T的内存,汗啊
从数据库硬盘目录的文件,恢复数据库 database.mdf database_log.LDF 数据库name--右单机:附加,即可
删除数据库的 log 方法一:可视 数据库name--右单机 -- 分离(将数据库从 ,sqlserver的实例中删除) 在硬盘上手动删除 log 重新 ?附加 ?数据库 http://msdn.microsoft.com/zh-cn/library/ms190794.aspx


方法二:代码 查看所有数据库的信息 SELECT NAME,recovery_model_desc FROM sys.databases
将数据库的回复模式从 full 改为 simple ALTER DATABASE databaseName ? SET Recovery simple 得到log日志的名字(得到的数据库和日至文件的名字可能与本地文件实际的名字不完全一样,但是就用那个) USE ?databaseName ??SELECT NAME,size FROM sys.database_files
将日志收缩到10M(假设得到名字 data_log) DBCC SHRINKFILE (N'data_log',10)


将mysql的数据导入sqlserver总是乱码错误(终极方案)

1 先用Utroedit将字段转码为:unicode

2 bulk insert?? dbo.tb_spider_traffic from "d:xxxxxx.txt"
?? with (FIELDTERMINATOR ='t') //用‘t’作为换行符

OK


举例: 1 select * from char_test ?where LEN(char2)=2 //取列char2中,有2个字符的记录。如:"中国","中a","ab"都是两个字符,但是他们所占的字节数不同
2 多个表查找相同的结果进行合并,Union 去重,union all不去重 select * from A ?? union
select * from B

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读