sqlserver中,用户和角色有什么区别
发布时间:2025-05-23 16:06:06 发布人:远客网络
一、sqlserver中,用户和角色有什么区别
1、用户是具体到某一个账户个体,角色是某一类账户的集合。
2、比如说仓库管理员,这是一个角色,他们管理着仓库;
3、但是可能公司里有好几个仓库管理员,他们是不同的用户;
4、在数据库里,角色代表一系列权限的集合,如果将某个角色分配给某个用户,则这个用户就拥有了这一系列的权限。
5、这样做的好处是不必为单个用户分配不同的权限;假如公司新招库管员一名,直接赋予他库管员的角色,他就有了管理仓库的一系列权限,如果这个人要调换到销售部门去,那么直接给他换个角色就解决了权限的问题。
6、数据库下同理,有些用户只能查询某些表,而有些用户又只能执行SP,这种权限就需要角色来管理。
二、...怎么恢复master数据库,sql server 2008 r2.
sql server 2005& 2008 master与msdb数据库的备份与恢复,master与msdb数据库的备份与普通数据库一样,本文主要描述master与msdb数据库的恢复的一些个人积累。恢复master与msdb数据库关键在于以单用户模式启动,其它并没有太大的区别。由于系统数据库对Sql Server来说尤其重要,为了确保SQL SERVER系统的正常运行,除了日常备份用户的数据库之外,我们还需要备份系统数据库,如对Master,Model,Msdb(TempDB不需备份)进行完整备份 1、还原Master数据库如果系统配置丢失或Master出现问题,可以进入单用户模式进行还原;如果出现下列情况,必须重新生成损坏的 master数据库: A. master数据库的当前备份不可用。 B.存在 master数据库备份,但由于 Microsoft SQL Server实例无法启动,因此无法还原该备份。 1、重新生成 master数据库:注意:在 SQL Server 2005中已废止 Rebuildm.exe程序。若要重新生成 master数据库,请使用 setup.exe。 1、 Start/wait setup.exe/qn INSTANCENAME= REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=例:start/wait e:“setup.exe/qn INSTANCENAME=mssqlserver REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=abc123@!@注:INSTANCENAME:指定实例名,默认实例则用mssqlserver表示 REINSTALL:指定引擎 SAPWD:强密码 Setup.exe:指定光盘1中的根目录下的文件/qn开关用于取消所有安装程序对话框和错误消息。如果指定/qn开关,则所有安装程序消息(包括错误消息)都将写入安装程序日志文件。有关日志文件的详细信息,请参阅如何查看 SQL Server 2005安装日志文件。指定/qb开关将显示基本的安装程序对话框。还会显示错误消息。 2、还原Master备份(在恢复master的备份时要注意:必须在单用户(single user)模式下进行) a.进入单用户模式的方法: 1.在命令行模式下输入sqlservr-c-f-m或者输入sqlservr-m其中:-c可以缩短启动时间,SQL Server不作为Windows NT的服务启动-f用最小配置启动SQL Server-m单用户模式启动SQL Server 2.系统默认没有设置PATH,先进入CMD,进入“C:“Program Files“Microsoft SQL Server“MSSQL.1“MSSQL“Binn”,执行SQLSERVR.EXE–M打开SSMS工具,先断开连接,再新建查询,执行以下命名还原 USE master GO RESTORE DATABASE master FROM disk=‘c:“master.bak‘ GO开始实验了~~~ MASTER重新生成为了模拟MASTER数据库坏了,我们就删除MASTER数据库(要停止SQL SERVER服务才能删除)在我的电脑,C:“ PROGRAM FILES“MICROSOFT SQL SERVER“MSSQL.1“MSSQL“DATE中删除MASTER.MDF重新生成MASTER 1.首先在CMD中输入 start/wait setup.exe/qn INSTANCENAME= REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=其中的 SETUP.EXE为启动光盘的路径,我这里的是 E:“SETUP.EXE/QN我这里的为默认实例所以其中的用 MSSQLSERVER代替最后的为密码我设密码为abc123@!@,所以就用abc123@!@代替若没有返回错误,我们就可以到我的电脑中C:“ PROGRAM FILES“MICROSOFT SQL SERVER“MSSQL.1“DATE上面又有MASTER.MDF了接下来进入目录单用户模式启动SSMS工具,新建查询输入命令启动服务(MSSQL SERVER)打开SSMS连接到数据库后就可以发现数据库中的数据又回来了以下是我在命令行下搞的命令,我用记事本的方式全部复制下来了,为了不传附件,我就直接粘贴到下面了 Microsoft Windows [版本 5.2.3790](C)版权所有 1985-2003 Microsoft Corp. C:“Documents and Settings“Administrator>start/wait e:“setup.exe/qn INSTANCENAME=mssqlserver REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=abc123@!@ C:“Documents and Settings“Administrator>cd C:“Program Files“Microsoft SQL Server“MSSQL.1“MSSQL“Binn C:“Program Files“Microsoft SQL Server“MSSQL.1“MSSQL“Binn>sqlservr.exe-m 2008-04-18 15:47:46.56 Server Authentication mode is MIXED. 2008-04-18 15:47:46.59 Server Microsoft SQL Server 2005- 9.00.1399.06(Intel X86) Oct 14 2005 00:33:37 Copyright(c) 1988-2005 Microsoft Corporation Enterprise Edition on Windows NT 5.2(Build 3790: Service Pack 1) 2008-04-18 15:47:46.59 Server(c) 2005 Microsoft Corporation. 2008-04-18 15:47:46.59 Server All rights reserved. 2008-04-18 15:47:46.59 Server Server process ID is 3984. 2008-04-18 15:47:46.59 Server Logging SQL Server messages in file‘C:“Program Files“Microsoft SQL Server“MSSQL.1“MSSQL“LOG“ERRORLOG‘. 2008-04-18 15:47:46.59 Server This instance of SQL Server last reported using a process ID of 764 at 2008-4-18 15:46:40(local) 2008-4-18 7:46:40(UTC). This is an informational message only; no user action is required. 2008-04-18 15:47:46.60 Server Registry startup parameters: 2008-04-18 15:47:46.60 Server-d C:“Program Files“Microsoft SQL Server“MSSQL.1“MSSQL“DATA“master.mdf 2008-04-18 15:47:46.60 Server-e C:“Program Files“Microsoft SQL Server“MSSQL.1“MSSQL“LOG“ERRORLOG 2008-04-18 15:47:46.60 Server-l C:“Program Files“Microsoft SQL Server“MSSQL.1“MSSQL“DATA“mastlog.ldf 2008-04-18 15:47:46.62 Server Command Line Startup Parameters: 2008-04-18 15:47:46.62 Server-m2008-04-18 15:47:46.64服务器 SQL Server is starting at normal priority base(=7). This is an informational message only. No user action is required. 2008-04-18 15:47:46.67服务器 Detected 1 CPUs. This is an informational message; no user action is required. 2008-04-18 15:47:46.78服务器 Using dynamic lock allocation. Initial allocation of 2500 Lock blocks and 5000 Lock Owner blocks per node. This is an informational message only. No user action is required. 2008-04-18 15:47:46.84服务器 Attempting to initialize Microsoft Distributed Transaction Coordinator(MS DTC). This is an informational message only. No user action is required. 2008-04-18 15:47:47.95服务器 Attempting to recover in-doubt distributed transactions involving Microsoft Distributed Transaction oordinator(MS DTC). This is an informational message only. No user action is required. 2008-04-18 15:47:47.96服务器 Database Mirroring Transport is disabled in the endpoint configuration. 2008-04-18 15:47:47.96 spid5s Warning****************** 2008-04-18 15:47:47.96 spid5s SQL Server started in single-user mode. This an informational message only. No user action is required. 2008-04-18 15:47:47.99 spid5s Starting up database‘master‘. 2008-04-18 15:47:48.17 spid5s Recovery is writing a checkpoint in database‘master‘(1). This is an informational message only. No user action is required. 2008-04-18 15:47:48.28 spid5s SQL Trace ID 1 was started by login"sa". 2008-04-18 15:47:48.32 spid5s Starting up database ssqlsystemresource‘. 2008-04-18 15:47:48.76 spid5s Server name is‘VM01‘. This is an informational message only. No user action is required. 2008-04-18 15:47:48.78 spid8s Starting up database‘model‘. 2008-04-18 15:47:49.20服务器 A self-generated certificate was successfully loaded for encryption. 2008-04-18 15:47:49.23服务器 Server is listening on [‘any‘ 1433]. 2008-04-18 15:47:49.24服务器 Server local connection provider is ready to accept connection on [““.“pipe“SQLLocal“MSSQLSERVER ]. 2008-04-18 15:47:49.24服务器 Server local connection provider is ready to accept connection on [““.“pipe“sql“query ]. 2008-04-18 15:47:49.28服务器 Server is listening on [ 127.0.0.1 1434]. 2008-04-18 15:47:49.28服务器 Dedicated admin connection support was established for listening locally on port 1434. 2008-04-18 15:47:49.29服务器 The SQL Network Interface library could not register the Service Principal Name(SPN) for the SQL Server service. Error: 0x54b. Failure to register an SPN may cause integrated authentication to fall back to NTLM instead of Kerberos. This is an informational message. Further action is only required if Kerberos authentication is required by authentication policies. 2008-04-18 15:47:49.31服务器 SQL Server is now ready for client connections. This is an informational message; no user action is required. 2008-04-18 15:47:49.40 spid5s Starting up database‘msdb‘. 2008-04-18 15:47:49.68 spid8s Clearing tempdb database. 2008-04-18 15:47:49.93 spid5s Recovery of any in-doubt distributed transactions involving Microsoft Distributed Transaction Coordinator(MS DTC) has completed. This is an informational message only. No user action is required. 2008-04-18 15:47:50.57 spid8s Starting up database‘tempdb‘. 2008-04-18 15:47:50.76 spid5s Recovery is complete. This is an informational message only. No user action is required. 2008-04-18 15:56:22.34 spid51 SQL Trace was stopped due to server shutdown. Trace ID=‘1‘. This is an informational message only; no user action is required. 2008-04-18 15:56:22.40服务器 The SQL Network Interface library could not deregister the Service Principal Name(SPN) for the SQL Server service. Error: 0x54b. Administrator should deregister this SPN manually to avoid client authentication errors. C:“Program Files“Microsoft SQL Server“MSSQL.1“MSSQL“Binn>打开SSMS工具,先断开连接,再新建查询,执行以下命名还原 USE master GO RESTORE DATABASE master FROM disk=‘C:“Program Files“Microsoft SQL Server“MSSQL.1“MSSQL“Backup“master.bak‘ GO数据库中的显示的消息应为:已为数据库‘master‘,文件‘master‘(位于文件 1上)处理了 376页。已为数据库‘master‘,文件‘mastlog‘(位于文件 1上)处理了 6页。已成功地还原了 master数据库。正在关闭 SQL Server。 SQL Server正在终止此进程。则表示master数据库还原成功,启动服务后进入SSMS即可看到master数据库了恢复master数据库方法一:(操作步骤) 1停止MSSQLSERVER服务 2命令行输入: net start"SQL Server(MSSQLSERVER)"/m正常情况下显示如下信息: SQL Server(MSSQLSERVER)服务正在启动.. SQL Server(MSSQLSERVER)服务已经启动成功。 3命令行输入: sqlcmd 1>USE master; 2>GO此时显示:已将数据库上下文更改为'master'。 1>RESTORE DATABASE master FROM DISK='数据库备份文件路径'; 2>GO如果恢复成功,显示如下信息:已为数据库'master',文件'master'(位于文件 1上)处理了 376页。已为数据库'master',文件'mastlog'(位于文件 1上)处理了 3页。已成功地还原了 master数据库。正在关闭 SQL Server。 SQL Server正在终止此进程。失败则显示:消息 3154,级别 16,状态 4,服务器 HC,第 1行备份集中的数据库备份与现有的'master'数据库不同。消息 3013,级别 16,状态 1,服务器 HC,第 1行 RESTORE DATABASE正在异常终止。此时需要在恢复语句后面加上:WITH REPLACE。如: 1>RESTORE DATABASE master FROM DISK=数据库备份文件路径' WITH REPLACE; 2>GO 4重启MSSQLSERVER服务方法二:(与方法一差不多) 1打开“SQL Server配置管理器”,单击“SQL Server服务” 2在右窗格中,右键单击“SQL Server(<实例名>)”,再单击“属性” 3在“高级”选项卡的“启动参数”框中,键入以分号“;”分隔的参数。(例如,若要以单用户模式启动,在现有启动选项之前插入“-m;”,单击“确定”,此时,弹出警告框,单击“确定”即可) 4重新启动数据库引擎 5(同方法一中步骤3) 6成功恢复master数据库后,若要以正常的多用户模式重新启动服务器实例,必须先从“启动参数”框中删除刚才输入的“-m;”,然后重新启动SQL Server服务恢复msdb数据库在msdb数据库里存储较多的是SQL Agent里的内容,如作业、调度、操作员、警告等信息,同时还存放SQL Server Integration Service(SSIS)相关信息。其恢复过程与普通数据库恢复过程大同小异,不同点就是需要在单用户模式启动下进行恢复。 1打开SQL Server Management Studio,连接到相关的数据库服务器 2右键单击msdb数据库,单击“属性”打开数据库属性窗口,单击“选项”,在右边的“状态”/“限制访问”指定“SINGLE_USER”,然后单击“确定”即以单用户模式启动,此时msdb显示为“msdb(单个用户)” 3(同恢复普通数据库一样...) 4恢复完毕后,别忘了将“限制访问”改加以前的状态“MULTI_USER”
三、求C#桌面程序和数据库SQL Server打包方法
网上找的资料,我了下,还行。一).创建部署项目
1.在“文件”菜单上指向“添加项目”,然后选择“新建项目”。
2.在“添加新项目”对话框中,选择“项目类型”窗格中的“安装和部署项目”,然后选择“模板”窗格中的“安装项目”。在“名称”框中键入 setup1。
4.项目被添加到解决方案资源管理器中,并且文件系统编辑器打开。
5.在“属性”窗口中,选择 ProductName属性,并键入信息管理系统。
二).将主程序项目的输出添加到部署项目中
1.在“文件系统编辑器”中,选择“应用程序文件夹”。在“操作”菜单上,指向“添加”,然后选择“项目输出”。
2.在“添加项目输出组”对话框中,选择“项目”下拉列表中的“你的程序”。
4.从列表中选择“主输出”和“内容文件”组,然后单击“确定”。
1.在“文件”菜单上指向“新建”,然后选择“项目”。
2.在“新建项目”对话框中,选择“项目类型”窗格中的“Visual Basic项目”,然后选择“模板”窗格中的“类库”。在“名称”框中键入 installDB。
4.从“项目”菜单中选择“添加新项”。
5.在“添加新项”对话框中选择“安装程序类”。在“名称”框中键入 installDB。
1.在解决方案资源管理器中选择“setup1”项目。在“视图”菜单上指向“编辑器”,然后选择“用户界面”。
2.在用户界面编辑器中,选择“安装”下的“启动”节点。在“操作”菜单上,选择“添加对话框”。
3.在“添加对话框”对话框中,选择“许可协议”对话框,然后单击“确定”关闭对话框。
4.在“添加对话框”对话框中,选择“文本框(A)”对话框,然后单击“确定”关闭对话框。
5.在“操作”菜单上,选择“上移”。重复此步骤,直到“文本框(A)”对话框位于“安装文件夹”节点之上。
6.在“属性”窗口中,选择 BannerText属性并键入:安装数据库.
7.选择 BodyText属性并键入:安装程序将在目标机器上安装数据库
8.选择 Edit1Label属性并键入:数据库名称:
9.选择 Edit1Property属性并键入 CUSTOMTEXTA1
10.选择 Edit1Value属性并键入:dbservers
11.选择 Edit2Label属性并键入:服务器名:
12.选择 Edit2Property属性并键入 CUSTOMTEXTA2
13.选择 Edit2Value属性并键入:(local)
14.选择 Edit3Label属性并键入:用户名:
15.选择 Edit3Value属性并键入:sa
16.选择 Edit3Property属性并键入 CUSTOMTEXTA3
17.选择 Edit4Label属性并键入:密码:
18.选择 Edit4Property属性并键入 CUSTOMTEXTA4
19.选择 Edit2Visible、Edit3Visible和 Edit4Visible属性,并将它们设置为 true
1.在解决方案资源管理器中选择“setup1”项目。在“视图”菜单上指向“编辑器”,然后选择“自定义操作”。
2.在自定义操作编辑器中选择“安装”节点。在“操作”菜单上,选择“添加自定义操作”。
3.在“选择项目中的项”对话框中,双击“应用程序文件夹”。
4.选择“主输出来自 installDB(活动)”项,然后单击“确定”关闭对话框。
5.在“属性”窗口中,选择 CustomActionData属性并键入“/dbname=[CUSTOMTEXTA1]/server=[CUSTOMTEXTA2]/user=[CUSTOMTEXTA3]/pwd=[CUSTOMTEXTA4]/targetdir="[TARGETDIR]\"”。
附:/targetdir="[TARGETDIR]\"是安装后的目标路径,为了在installDB类中获得安装后的路径,我们设置此参数。
1.在打包项目中添加文件msiexec.exe(一般可在c:\windows\system32\下找到)
2.在文件系统视图中选择应用程序文件夹,在msiexec.exe上按右键,选择创建快捷方式,重命名快捷方式为"卸载".
3.更改此快捷方式的Arguments为"/x{产品id}",产品id的值为打包项目的ProductCode属性值.
1.先生成安装包,记下ProductCode(选择解决方案资源管理器根目录如setup1,再查看属性标签,不是右键中的属性),下面要用到
2.用VS.net建立一个新的控制台程序uninst.exe文件
Dim myProcess As Process= New Process
If System.Environment.OSVersion.ToString.IndexOf("NT 5") Then
myProcess.Start("msiexec","/X{2B65D4A9-C146-4808-AB4B-321FB0779559}")'改为自己的ProductCode
3.将控制台程序BIN目录的exe文件加入到打包程序文件中,在程序组创建uninst.exe的快捷方式
installdb.vb类,要添加引用 system.configuration.install.dll:
using System.Configuration.Install;
public class Installer1: System.Configuration.Install.Installer
private System.ComponentModel.Container components= null;
// TODO:在 InitializeComponent调用后添加任何初始化
protected override void Dispose( bool disposing)
///设计器支持所需的方法-不要使用代码编辑器修改
private void InitializeComponent()
components= new System.ComponentModel.Container();
private string GetSql(string Name)
// System.Diagnostics.Process sqlProcess= new System.Diagnostics.Process();
// sqlProcess.StartInfo.FileName="osql.exe";
// sqlProcess.StartInfo.Arguments= String.Format("-U{0}-P{1}-d{2}-i{3}db.sql", this.Context.Parameters["user"], this.Context.Parameters["pwd"],"master", this.Context.Parameters["targetdir"]);
// sqlProcess.StartInfo.WindowStyle= System.Diagnostics.ProcessWindowStyle.Hidden;
// sqlProcess.WaitForExit();//等待执行
// Assembly Asm= Assembly.GetExecutingAssembly();
// System.IO.FileInfo FileInfo= new System.IO.FileInfo(Asm.Location);
// string path=FileInfo.DirectoryName+@"\"+Name;
string path=this.Context.Parameters["targetdir"]+Name;
FileStream fs=new FileStream(path,FileMode.Open,FileAccess.Read,FileShare.Read);
StreamReader reader= new StreamReader(fs,System.Text.Encoding.Default);
Console.Write("In GetSql:"+ex.Message);
private void ExecuteSql(string DataBaseName,string Sql)
SqlConnection sqlConnection1=new SqlConnection();
sqlConnection1.ConnectionString=string.Format("server={0}; user id={1}; password={2}; Database=master",this.Context.Parameters["server"],this.Context.Parameters["user"],this.Context.Parameters["pwd"]);
System.Data.SqlClient.SqlCommand Command= new System.Data.SqlClient.SqlCommand(Sql,sqlConnection1);
Command.Connection.ChangeDatabase(DataBaseName);
Console.Write("In exception handler:"+ex.Message);
protected void AddDBTable(string strDBName)
ExecuteSql("master","CREATE DATABASE"+ strDBName);
ExecuteSql(strDBName,GetSql("sql.txt"));
ExecuteSql("master","exec sp_addlogin'myoamaster','myoamaster','"+strDBName+"',Null,Null");
ExecuteSql(strDBName,"EXEC sp_grantdbaccess'myoamaster','myoamaster'");
ExecuteSql(strDBName,"exec sp_addrolemember'db_owner','myoamaster'");
Console.Write("In exception handler:"+ex.Message);
public override void Install(System.Collections.IDictionary stateSaver)
AddDBTable(this.Context.Parameters["dbname"]);
这里有个sql.txt是数据库的sql脚本,当然可以调用osql来执行sql脚本,其实是一样的。
打包的时候必须把sql.txt文件加进来,否则不会执行。
如果你想附加数据库的mdf文件和ldf文件,用下面这段程序:
private void CreateDataBase(string strSql,string DataName,string strMdf,string strLdf)
SqlConnection myConn= new SqlConnection(strSql);
//EXEC sp_detach_db@dbname='BX_FreightMileage_2'//需要先将数据库分离出来
str="EXEC sp_attach_db@dbname='"+ DataName+"',@filename1='"+ strMdf+"',@filename2='"+strLdf+"'";
SqlCommand myCommand= new SqlCommand(str, myConn);
当然打包的时候也要把这两个数据库文件也加进来。
----------------------------------------------------------------------
sp_attach_db//附加数据库文件到服务器或
sp_attach_db_single_file//附加数据库的单个文件到服务器具体的sql语句就是:例如:
EXEC sp_attach_single_file_db’pubs’,’e:\data\pubs.mdf’sp_attach_db@dbname=”conmis2000″,@filename1=”d:\1\conmis2000_data.mdf”,@filename2=” d:\1\conmis2000_log.ldf”