海运的博客

SQL2008数据库恢复错误用户组当前数据库中已存在

发布时间:November 16, 2012 // 分类:数据库 // No Comments

SQL2008备份后恢复设定用户权限的时候提示用户、组或角色在当前数据库中已存在:
SQL2008用户组角色已存在.png
原因SQL数据库中包含一组用户和权限,使用存储过程sp_change_users_login更新用户数据库权限:

Use [dbname]
go
sp_change_users_login 'update_one', 'user', 'user'

SQL2008定时备份数据库并上传到FTP

发布时间:April 27, 2012 // 分类:备份存储,Windows // No Comments

首先新建数据库维护计划,定时执行数据库备份,打开数据库管理器——>管理——>维护计划——右键新建维护计划向导——>计划更改——>选择执行时间。
SQL维护计划执行时间.png
选择维护任务:备份数据库
SQL2008备份数据库完整.png
选择要备份的数据库,可选数据库备份目录,备份报告。
SQL2008选择要备份的数据库.png
维护计划添加完成。
SQL2008新建维护计划完成.png
FTP上传脚本,由于windows下ftp命令不支持被动模式,此脚本使用curl命令上传到FTP

set sqlpath=d:\back #备份目录
set dbname=onovps #备份数据库名称,例onovps.bak
set ftphost=www.haiyun.me #FTP服务器地址
set ftpuser=ftp #FTP用户
set ftppasswd=passwd #FTP密码
path=%path%;C:\Program Files\WinRAR\;C:\Program Files\curl\ #设置环境变量
cd %sqlpath%
Rar.exe a  "%dbname%"-"%date:~0,10%".rar -df "%dbname%".bak
curl -u  %ftpuser%:%ftppasswd% -T %dbname%-"%date:~0,10%".rar ftp://%ftphost%

然后将此脚本添加到计划任务,定时每天执行。

更新:
经过调试发现问题有点多哦,首先维护计划未成功执行,错误日记:SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 'WIN-KC19Q4LEIOD\Administrator' 的信息,错误代码 0x534。
解决:原来之前有更改过计算机名称,更改SQL管理器——>安全性——>登录名——>当前管理员账户前计算机名称。
其次维护计划执行后备份的数据库名称是随机的,不便于处理,使用sqlcmd命令备份数据库解决。

sqlcmd -U -P -Q "backup database onovps to disk="c:\back\onovps.bak"
-U:  #数据库用户 (可选)
-P   #数据库密码 (可选)
#如未指定-U -P以本地账户验证登录
#如果数据库以www.haiyun.me形式,须以[www.haiyun.me]方式备份,不然会提示语法错误

SQL2000/2008安全设置及更改服务运行账户非System

发布时间:April 24, 2012 // 分类:数据库 // No Comments

SQL如果在安装时未指定用户默认以system权限运行,这给服务器带来很大的安全隐患,可以更改运行账户为普通用户。
在CMD下新建运行SQL的用户,或在用户管理新建。

net user newuser password /add

SQL2000下,打开SQL企业管理器,选择local——右键——属性——安全性——启动服务用户
SQL2000更改服务运行用户.png
更改后确定重启SQL服务,要保证SQL安装目录、数据库目录新用户有读写权限,一般经过上述步骤后系统会自动更改相应权限。
SQL2008下,打开SQL server配置管理器,SQL server服务——SQL server——右键——属性。
SQL2008更改服务运行用户.png
SQL2000删除危险的扩展,包括xp_cmdshell。

use master
EXEC sp_dropextendedproc 'xp_cmdshell'
EXEC sp_dropextendedproc 'Sp_OACreate'
EXEC sp_dropextendedproc 'Sp_OADestroy'
EXEC sp_dropextendedproc 'Sp_OAGetErrorInfo'
EXEC sp_dropextendedproc 'Sp_OAGetProperty'
EXEC sp_dropextendedproc 'Sp_OAMethod'
EXEC sp_dropextendedproc 'Sp_OASetProperty'
EXEC sp_dropextendedproc 'Sp_OAStop'
EXEC sp_dropextendedproc 'Xp_regaddmultistring'
EXEC sp_dropextendedproc 'Xp_regdeletekey'
EXEC sp_dropextendedproc 'Xp_regdeletevalue'
EXEC sp_dropextendedproc 'Xp_regenumvalues'
EXEC sp_dropextendedproc 'Xp_regread'
EXEC sp_dropextendedproc 'Xp_regremovemultistring'
EXEC sp_dropextendedproc 'Xp_regwrite'
drop procedure sp_makewebtask 

网站数据库用户不要使用SA账号,新建特定账号拥有数据库public和db_owner权限。
sql数据库安全用户权限.png
更改TCP端口:
sql2000更改tcp端口.png

分类
最新文章
最近回复
  • : linux系统上单个网卡多条宽带拨号获取公网IP,外网可以访问这些IP,有偿! Q:25299...
  • 硅谷少年: 非常有用,感谢分享
  • spartan2: https://dashboard.hcaptcha.com/welcome_accessib...
  • 海运: 应该能,在购买页面先手工跳过cf机器验证,后续一定时间内不更换ip应该不会再次验证。
  • spartan: 大佬斯巴达开启了CF的机器识别验证,请问插件能自动跳过吗? 另外这个脚本有没有简单使用说明,新...
  • vincent: 膜拜大佬
  • 海运: proxy-header或proxy_protocol
  • liangjw: 如果是 内部调用 或者 中间存在 代理 而上一个代理又在内网 ,那怎么处理来自代理私有IP?
  • chainofhonor: 感谢,用dnsmasq设置自动判断BIOS和UEFI成功了
  • 海运: 不好意思,这个是很多年前的,现在也许已经不适用,我现在也不用多线了。