本文将带您了解关于Sqlserver用户、组或角色在当前数据库中已存在的新内容,同时我们还将为您解释sqlserver用户组或角色在当前数据库中已存在的相关知识,另外,我们还将为您提供关于DBA基础系
本文将带您了解关于Sqlserver用户、组或角色在当前数据库中已存在的新内容,同时我们还将为您解释sqlserver用户组或角色在当前数据库中已存在的相关知识,另外,我们还将为您提供关于DBA基础系列SQL Server 2014:2. SQL Server用户数据库初始化配置、MSSQL2008R2数据库附加上后新建用户设置权限提示错误“用户、组或角色、SQL Server 创建用户报错:消息 15023,级别 16,状态 1,第 1 行 用户、组或角色 ''XXX'' 在当前数据库中已存在。、SQL Server 恢复数据库备份到一个已存在的正在使用的数据库上的实用信息。
本文目录一览:- Sqlserver用户、组或角色在当前数据库中已存在(sqlserver用户组或角色在当前数据库中已存在)
- DBA基础系列SQL Server 2014:2. SQL Server用户数据库初始化配置
- MSSQL2008R2数据库附加上后新建用户设置权限提示错误“用户、组或角色
- SQL Server 创建用户报错:消息 15023,级别 16,状态 1,第 1 行 用户、组或角色 ''XXX'' 在当前数据库中已存在。
- SQL Server 恢复数据库备份到一个已存在的正在使用的数据库上
Sqlserver用户、组或角色在当前数据库中已存在(sqlserver用户组或角色在当前数据库中已存在)
将数据库恢复到其他服务器时,数据库中包含一组用户和权限,但可能没有相应的登录或者登录所关联的用户可能不是相同的用户。这种情况被称为存在“孤立用户”。此时是不能通过新建登录或者是对同名登录授予对应数据库的“用户”权限来解决登录问题,因为sqlServer会报出“错误15023:当前数据库中已存在用户或角色“。
为了能够使数据库账号顺利的赋权访问该数据库,可以采用sqlserver内置的系统存储过程sp_change_users_login来解决此问题。
解决此问题的步骤如下:
1、登录到sqlserver管理工具,连接服务器成功后,在新建查询窗口输入以下语句即可解决。
Use [数据库名]
go
exec sp_change_users_login ‘UPDATE_ONE‘,‘用户名‘,‘登录名‘
此语句将用户名映射为指定的登录名。
2、举个例子将ADataBase数据库中的user1用户与登录名user1相关联,则可使用以下语句。
Use ADataBase
go
exec sp_change_users_login ‘UPDATE_ONE‘,‘user1‘,‘user1‘
扩展阅读:Sqlserver修改默认端口号增加安全性。
备注:此原创文章最早发表于自博主个人技术站点。原文链接:Sqlserver用户、组或角色在当前数据库中已存在_IT技术小趣屋。
DBA基础系列SQL Server 2014:2. SQL Server用户数据库初始化配置
前言开始前先黑微软一把:Microsoft秉承一贯的简单易用作风(Next、Next、Next…)这点是它吸引用户的地方,但是这个优点如果用在数据库上将是一场灾难,如我们
前言开始前先黑微软一把:microsoft秉承一贯的简单易用作风(next、next、next… )这点是它吸引用户的地方,但是这个优点如果用在数据库上将是一场灾难,如我们上一章讲到的sql server安装部署,很多人都只知道下一步下一步下一步,但是从来没有考虑过安装向导给出这么多参数配置意义何在,同样的大家习惯了安装完sql server后直接使用的方式基本上不去考虑用户数据库初始配置,随着业务量不断攀升,数据量几何倍数的递增,然后发现sql server越来越慢,但是又各种无解,最后得出一个结论sql server只能满足中小企业需要,但是真实的情况是这样吗?答案当然是否定的【传闻纳斯达克核心数据库原始数据量约2pb现已经转到sql 2014上了】视频地址
下面我将给到大家一些基本配置和思路让大家的用户数据库在未来数据量增长到TB、PB时依然可以有的放矢的去优化性能满足业务需求
当然这个仅仅是根据我的经验进行探讨,实际情况怎么搭配大家仁者见仁智者见智
无论如何还是要重申一句:本文观点仅代表个人经验,如有不足请大家补充,本文内容如果在实际生产中遇到问题不负任何责任,使用前请先自行论证,最权威的资源请查阅微软官方资料库MSDN,TechNet,官方Blog以及官方技术白皮书等
关于数据库文件场景一:新建数据库这种情况进行优化最为轻松,优化成本最低
点击下载“修复打印机驱动工具”;
实施步骤:
1. 业务分析,回答自己几个基本问题:
业务涉及的表:
哪些表是数据活跃表:
哪些表是数据惰性表:
cur T.NAMESYS.INDEXES cur=0curcur
将上述T-SQL打印出来的语句Copy到新查询器里面批量执行即可
然后再针对遗留在原始文件组中的那些非聚集索引导出其脚本,批量指定新文件组名字然后DROP,再CREATE
最后原始文件基本上都空了,这时候进行一次数据文件收缩,也就是几秒钟的事情了,至此底层数据整理完成
P.S.其实大家可以看出重整数据文件的过程并不是想象中那么复杂,理清思路产生一大堆脚本,然后扔到Job里面慢慢执行自己就可以提前下班吃饭了
【DBA的工作内容其实还是蛮愉快的:90%以上时间都是在等,等脚本执行,等问题发生,最关键的是等老板发工资;如果一家公司DBA每天都很忙要么是DBA能力不够,要么就是公司或老板有问题】
场景二交易型项目:
交易型项目比数据仓库要复杂一些,不过基本上也是使用上述脚本修修改改就能快速完成
需要注意的地方:主键、外键、约束(尤其是自增约束等)
如果有这些特殊情况就需要有针对性的逐步分析逐步迁移了,这时候就需要先理出一个优先级列表慢慢处理
关于数据库参数数据库参数也是比较重要的一个环节,尤其是SQL 2000退役,SQL 2005停止主流支持、SQL 2008即将停止主流支持,大量的数据库需要升级到更高版本
数据库兼容级别在帮助客户进行性能问题分析的时候我留意了一下,很多升级上来的数据库基本上数据库兼容级别都没有修改,这个是需要注意的
SQL Server一般情况默认向下兼容3个主流版本,是为了防止由于版本升级导致用户使用的早期语法或特殊的系统视图出现错误而给予的缓冲机会,并不是说大家在已经升级到高版本后还是继续使用老版本的特性
CHECKSUM这个参数一般是由于从SQL 2000升级上来时候没有重新配置导致,
SQL 2000的时候还只能简单的检查一下数据页头和定义,无法检查数据页是否真的正常
建议升级上来的所有数据库都去检查一下这个并设置为CHECKSUM
自动关闭数据库:这个参数类似于Oracle关闭时仅发出shutdown命令,它会等待所有会话结束后关闭数据库,一般情况我们都会用到immediate要求立即结束和关闭
自动创建统计信息:这个最好是开启,SQL执行依赖的执行计划,执行计划评估执行成本就是根据统计信息来的,所以这个相当重要,不是特殊情况应该保持常开
自动收缩数据库:个人从来就很诧异这个参数,如此耗费性能又没有实际价值的一个参数有存在的意义吗?如果不是特殊原因这个参数应该始终关闭
自动更新统计信息:这个参数同自动创建统计信息是一样的,强烈建议常开,统计信息收集越准SQL执行选择的执行计划就会越优,,性能也就越好
自动异步更新统计信息:这个参数建议设置为开启,我们知道统计信息非常重要,但是如果每次数据变化都去收集一次统计信息这个性能也就不那么好了,这个又再次体现了【平衡】
以上内容各个版本数据库都适用,下列内容将针对特殊版本使用
数据压缩:
适用版本:SQL Server 2008及其以后
非聚集列存储索引:
适用版本:SQL Server 2012及其以后
聚集列存储索引:
适用版本:SQL Server 2014及其以后
本文出自 “Fast” 博客,请务必保留此出处
MSSQL2008R2数据库附加上后新建用户设置权限提示错误“用户、组或角色
我们在进行MSSQL数据库迁移时候常常会用到附加数据库方式快速还原数据库内容。简单又快捷的。但是当我要设立用户来对数据库进行管理时候会发现。有这样一个提示错误:
这里我们来找找问题在哪里!
首先我们可以查看我们附加上的服务器的数据库的配置,我们查看他的属性。
我们在属性中查看权限这个时候会发现这里有个用户
但是当我们在数据库安全性中的登录名中查看用户的时候会发现并没有存在这个用户。
这里可能会用到一个名词叫‘孤立用户’。
这里解释下这个名词:孤立帐户,就是某个数据库的帐户只有用户名而没有登录名,这样的用户在用户库的sysusers系统表中存在,而在master数据库的syslogins中却没有对应的记录。
孤立帐户的产生一般是一下两种:
1.将备份的数据库在其它机器上还原;
2.重装系统或SQL SERVER之后只还原了用户库
问题找到了那我们就来解决:
解决方法
1、首先我们建立一个登录名和那个数据库记录一致的名字,但是不进行设置权限也就是用户映射不进行操作。
2、打开新建查询
3、使用命令让数据库中的用户和登录名的用户关联起来
1
Use 数据库名<br>go<br>sp_change_users_login
`''update_one'',
''用户名'',
''登录名''`
执行后,我们再去查看用户映射会发现自动就把对应数据库权限设置上了。
SQL Server 创建用户报错:消息 15023,级别 16,状态 1,第 1 行 用户、组或角色 ''XXX'' 在当前数据库中已存在。
问题描述:
原因:
当数据库恢复到其他服务器时,原数据库中包含一组用户和权限,但可能没有相应的登录或者登录所关联的用户可能不是相同的用户。
这种情况可能会出现上面的问题。该问题是无法通过新建登录或者是对同名登录授予对应数据库的 “用户” 权限来解决登录问题。
消息 15023,级别 16,状态 1,第 1 行
用户、组或角色 ''XXX'' 在当前数据库中已存在。
解决方法:
Use 库名
go
sp_change_users_login update_one, 用户名, 用户名
例如:
Use user
go
sp_change_users_login update_one, abuser, abuser
SQL Server 恢复数据库备份到一个已存在的正在使用的数据库上
感兴趣的小伙伴,下面一起跟随小编 jb51.cc的小编两巴掌来看看吧!
USE master -- (Can’t sit in the database whilst its being restored!)GO
ALTER DATABASE MyDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
-- Restore Full Backup
RESTORE DATABASE MyDatabase
FROM disK = ’x:\MSsql\BACKUP\MyBackupFilename_Full.BAK’
WITH
REPLACE,
norECOVERY, -- Use if more T/Logs to recover
-- RECOVERY, -- Use if NO more T/Logs to recover
STATS = 10, -- Show progress (every 10%)
MOVE ’MyDatabase_Data’ TO ’x:\MSsql\DATA\MyDatabase.mdf’,
MOVE ’MyDatabase_Log’ TO ’x:\MSsql\DATA\MyDatabase.ldf’
GO
-- Optional restore Differential Backup
RESTORE DATABASE MyDatabase
FROM disK = ’x:\MSsql\BACKUP\MyDatabase_Diff.BAK’
WITH
-- RECOVERY -- Use if NO more file to recover
norECOVERY -- Use if there are T/Logs to recover
GO
-- Optional restore Transaction Log Backup
RESTORE DATABASE MyDatabase
FROM disK = ’x:\MSsql\BACKUP\MyDatabase_yyyymmdd_hhmm_Trans.BAK’
WITH
-- RECOVERY -- Use if NO more T/Logs to recover
norECOVERY -- Use if more T/Logs to recover
GO
-- Set the database ready for use (after all backups have been restored)
RESTORE DATABASE MyDatabase RECOVERY
GO
-- Rename logical names (only needed if restoring from a backup for a Different database):
ALTER DATABASE MyDatabase
MODIFY FILE (NAME = ’OrigDatabase_Data’, NEWNAME = ’MyDatabase_data’)
GO
ALTER DATABASE MyDatabase
MODIFY FILE (NAME = ’OrigDatabase_Log’, NEWNAME = ’MyDatabase_log’)
GO
我们今天的关于Sqlserver用户、组或角色在当前数据库中已存在和sqlserver用户组或角色在当前数据库中已存在的分享就到这里,谢谢您的阅读,如果想了解更多关于DBA基础系列SQL Server 2014:2. SQL Server用户数据库初始化配置、MSSQL2008R2数据库附加上后新建用户设置权限提示错误“用户、组或角色、SQL Server 创建用户报错:消息 15023,级别 16,状态 1,第 1 行 用户、组或角色 ''XXX'' 在当前数据库中已存在。、SQL Server 恢复数据库备份到一个已存在的正在使用的数据库上的相关信息,可以在本站进行搜索。
本文标签: