SQLServer: 迁新服务器常见的初始准备工作

一、检查即时初始化是否开启, 没有开启则开通相关权限并开启。相关文档:点击打开链接

二、检查SQL Server中的计算机名与实际计算机名是否一致,不一致则应该修正(注:修改完成后要重启SQL Server服务才生效):

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'

    PRINT 'ok'
END

SELECT @@SERVERNAME, SERVERPROPERTY('servername')

 

三、tempdb文件设置为8个固定的数据文件(主要是优化并发性能)和一个日志文件, 类似下图:

--大的平台8*8G--8*12G,小的8*1G或8*2G, 要导大型报表的应该大一些。 如果磁盘比较紧张,可以设置稍小一点,后面监控tempdb的使用情况再来修改。

--但还是尽量在前期做好,后面修改需要重启SQL Server服务,比较麻烦。

use master
declare @path nvarchar(max),@size nvarchar(max),@sql nvarchar(max),@FILEGROWTH nvarchar(max)
set @path=N'f:\tempdb\2014\' --tempdb文件位置,注意路径最后的斜杠
set @size=N'128' --单个文件大小,单位MB
set @FILEGROWTH=N'64' --tempdb日志文件增长量,单位MB


set @sql='ALTER DATABASE [tempdb] MODIFY FILE ( NAME = N''tempdev'', SIZE = '+@size+'MB , FILEGROWTH = '+@FILEGROWTH+'MB)'
exec sp_executesql @sql
set @sql='ALTER DATABASE [tempdb] ADD FILE ( NAME = N''tempdev2'', FILENAME = N'''+@path+'tempdev2.ndf'' , SIZE = '+@size+'MB , FILEGROWTH = '+@FILEGROWTH+'MB)'
exec sp_executesql @sql
set @sql='ALTER DATABASE [tempdb] ADD FILE ( NAME = N''tempdev3'', FILENAME = N'''+@path+'tempdev3.ndf'' , SIZE = '+@size+'MB , FILEGROWTH = '+@FILEGROWTH+'MB)'
exec sp_executesql @sql
set @sql='ALTER DATABASE [tempdb] ADD FILE ( NAME = N''tempdev4'', FILENAME = N'''+@path+'tempdev4.ndf'' , SIZE = '+@size+'MB , FILEGROWTH = '+@FILEGROWTH+'MB)'
exec sp_executesql @sql
set @sql='ALTER DATABASE [tempdb] ADD FILE ( NAME = N''tempdev5'', FILENAME = N'''+@path+'tempdev5.ndf'' , SIZE = '+@size+'MB , FILEGROWTH = '+@FILEGROWTH+'MB)'
exec sp_executesql @sql
set @sql='ALTER DATABASE [tempdb] ADD FILE ( NAME = N''tempdev6'', FILENAME = N'''+@path+'tempdev6.ndf'' , SIZE = '+@size+'MB , FILEGROWTH = '+@FILEGROWTH+'MB)'
exec sp_executesql @sql
set @sql='ALTER DATABASE [tempdb] ADD FILE ( NAME = N''tempdev7'', FILENAME = N'''+@path+'tempdev7.ndf'' , SIZE = '+@size+'MB , FILEGROWTH = '+@FILEGROWTH+'MB)'
exec sp_executesql @sql
set @sql='ALTER DATABASE [tempdb] ADD FILE ( NAME = N''tempdev8'', FILENAME = N'''+@path+'tempdev8.ndf'' , SIZE = '+@size+'MB , FILEGROWTH = '+@FILEGROWTH+'MB)'
exec sp_executesql @sql


set @sql='ALTER DATABASE [tempdb] MODIFY FILE ( NAME = N''templog'', SIZE = '+@size+'MB , FILEGROWTH = '+@FILEGROWTH+'MB )'
exec sp_executesql @sql


四、检测数据库服务器各个磁盘的 IO 。工具见 点击打开链接 。

如果DB所在的磁盘IO性能太差(seq read<150MB/s, 4k read<2MB/s, 如果用于alwayson或重要服务器, 至少应该翻倍才行),必须及时反馈和跟进。


五、设置正式数据库的增长量。

--  一般设置为 50MB~150MB (按上面的IO检测性能来,如果够好还可以设置大一些)。

--  设置为固定值MB增长,太大太小都会影响性能;设置为按百分比增长,则可能影响性能,浪费磁盘空间、容易导致磁盘空间爆满。


六、设置正式数据库的基于行版本的控制级别。

这一步必须在没有连接上任何应用时做,因为一旦连接上很可能就设置不了。

连接上了生产环境的应用,则应该在晚上或者其它基本没有用户使用时操作。

方法1:脚本操作:

--注:必须设置好当前库,只在当前库上执行!无需改任何参数!
--1. 杀当前进程之外的所有进程
DECLARE @sql NVARCHAR(MAX),@currDbName NVARCHAR(100)
SET @currDbName=DB_NAME()
SELECT @sql=REPLACE(
    (SELECT 'kill '+CAST(spid AS NVARCHAR(50))+';' FROM sys.sysprocesses WHERE dbid=DB_ID(@currDbName) AND spid!=@@SPID FOR XML PATH(''))
    ,';','
')
PRINT @sql
EXEC (@sql)

--2. 修改行版本控制级别
SET @sql='ALTER DATABASE '+@currDbName +' SET ALLOW_SNAPSHOT_ISOLATION ON'
EXEC (@sql)
SET @sql='ALTER DATABASE '+@currDbName +' SET READ_COMMITTED_SNAPSHOT ON'
EXEC (@sql)

--3. 查看是否已修改过来(两个1才是正确的)
SELECT [name],snapshot_isolation_state,snapshot_isolation_state_desc,is_read_committed_snapshot_on
FROM master.sys.databases
WHERE NAME=@currDbName


方法2:如果脚本无法生效,那就得改用单用户模式进入再操作, 这就不赘述了。

注:1. 方法1对 alwayson 无影响; 2. 方法2无法对配置了Alwayson、镜像的库进行操作。

七、增加一个专用于监控(主要是SqlClr存储过程来监控cpu)的数据库,名称格式:monitor_地区_项目_本地ip(或外网ip) 。

八、数据库最大内存设置

物理内存(GB) 设置sqlserver最大内存(GB)
<=4 物理内存 - 1
>4, <=16 物理内存 - 2
>16, <=128 物理内存 - 3
>128, <=256 物理内存 - 4~5
>256 物理内存 - 5~6

九、WinServer2008安装framework3.5 sp1(自身带),安装framework4.5.2 framework4.5.2

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值