MS SQL Server数据库单个用户与单用户模式
- 格式:docx
- 大小:15.15 KB
- 文档页数:1
SQL 2005 修改系统表方法。
在SQL Server 2000 中修改系统表的方法大部分人都知道,介绍如何在SQL 2005 中修改系统表的资料目前还比较少,虽然微软不赞成修改系统表,而且也把修改系统表的代码隐藏起来了。
但微软一贯喜欢给自己留个小后门。
我是这么想的:最先知道如何修改SQL 2005 系统表的人只有微软SQL Server 2005 的设计、开发者。
于是就到msdn 中逛逛,最后终于找到了SQL 2005 修改系统表的方法:)SQL 2005 修改系统表的两个先决条件1. 在单用户模式(single-user mode)下启动 sql server instance(实例)。
2. 使用管理员专用连接(DAC: dedicated administrator connections),连接到 SQL Server Instance下面,就来具体介绍如何实现这两个修改系统表的先决条件。
1. 单用户模式下启动SQL Server 2005 Instance (实例)。
【开始】--【运行】--【services.msc】进入Windows 服务管理器。
找到【SQL Server 服务】--【右键】--【属性】根据【可执行文件的路径】内容,我的是:"D:/Microsoft SQL Server 2005/MSSQL.1/MSSQL/Binn/sqlservr.exe" -sSQLB 命令行下,进入sqlservr.exe 安装路径,执行:sqlservr.exe -sSQLB -mC:/>d:D:/>cd D:/Microsoft SQL Server 2005/MSSQL.1/MSSQL/BinnD:/Microsoft SQL Server 2005/MSSQL.1/MSSQL/Binn> sqlservr.exe -sSQLB -m-sSQLB 表示要启动的SQL Server 实例名字为:SQLB;-m 参数表示以单用户模式启动SQL Server 实例。
SqlServer启动参数配置1.Sqlservr.exe运⾏参数。
SqlServer的启动可以为Windows服务⽅式(默认),也可以以应⽤程序⽅式启动。
下⾯介绍sqlservr.exe以应⽤程序⽅式启动时的参数问题。
sqlservr应⽤程序⽤法:sqlservr[-sinstance_name][-c][-dmaster_path][-f][-eerror_log_path][-lmaster_log_path][-m][-n][-Ttrace#][-v][-x][-gnumber][-O][-ynumber]-sinstance_name指定要连接到的SQLServer实例。
如果未指定命名实例,sqlservr将启动SQLServer默认实例。
重要启动SQLServer实例时,必须从实例所在的适当⽬录使⽤sqlservr应⽤程序。
对于默认实例,从\MSSQL\Binn⽬录运⾏sqlservr。
对于命名实例,在\MSSQL$instance_name\Binn⽬录运⾏sqlservr。
-c表⽰以独⽴于WindowsNT服务控制管理器的⽅式启动SQLServer实例。
当从命令提⽰符下启动SQLServer时,可使⽤该选项缩短启动SQLServer的时间。
(注意:当使⽤该选项时,⽆法通过使⽤SQLServer服务管理器或netstop命令停⽌SQLServer,⽽且如果已从MicrosoftWindowsNT?系统注销,则SQLServer将停⽌运⾏。
)-dmaster_path指出master 数据库⽂件的完全合法路径。
在-d和master_path之间没有空格。
-f以最⼩配置模式启动服务器。
然后,系统管理员可对配置选项重新配置(使⽤sp_configure系统存储过程)。
-eerror_log_path表⽰错误⽇志⽂件的完全合法路径。
如果未指定路径,则默认实例的默认位置是x:\ProgramFiles\MicrosoftSQLServer\MSSQL\Log\Errorlog,命名实例的默认位置是x:\ProgramFiles\MicrosoftSQLServer\MSSQL$instance_name\Log\Errorlog。
SQLServer数据库限制单⽤户使⽤和解除单⽤户使⽤
⼀个在单⽤户(SINGLE_USER)模式下的数据库⼀次只能有⼀个连接。
在限制⽤户(RESTRICTED_USER)模式下的数据库只能接受被认为是“合格”⽤户的连接——这些⽤户属于dbcreator或sysadmin服务器⾓⾊,或者是那个数据库的db_owner⾓⾊的成员。
数据库在默认时处于多⽤户模式(MULTIPLE_USER),这意味着所有具有⼀个数据库中有效⽤户名的⽤户都可以连接该数据库。
在数据库维护阶段时⼀般需要将数据库限制为单⽤户模式。
可以使⽤下⾯的语句进⾏更改。
设置为单⽤户模式,数据库会标志为【单个⽤户】
ALTER DATABASE 数据库名称 SET SINGLE_USER;
有时候在数据库还原时发⽣错误,也会将数据库设置为单⽤户模式,造成应⽤程序⽆法连接数据库,针对这种情况将⽤户访问模式更改为多多⽤户【MULTI_USER】即可恢复访问。
ALTER DATABASE 数据库名称 SET MULTI_USER;。
sqlserver还原数据库时提⽰数据库正在使⽤,⽆法进⾏操作的解决⽅法这个问题的原因在于有⽤户连接了当前要做还原的数据库,这⾥的⽤户甚⾄包括当前要做还原的⽤户。
解决办法就是关闭与要还原数据库的所有连接。
⼩编推荐的⼀个⽅法:到服务⾥⾯重启下sqlserver服务即可。
问题⼀描述:SQL Server数据库备份还原后,在数据库名称后会出现“受限制访问”字样问题⼆描述:在对SQL Server数据库进⾏还原时,提⽰:System.Data.SqlClient.SqlError:因为数据库正在使⽤,所以⽆法获得对数据库的独占访问权。
(Microsoft.SqlServer.Smo)。
出现此问题的原因是在还原数据库时,有其他⽤户正在使⽤数据库。
还原数据库要求数据库⼯作在单⽤户模式。
通常就是DBA在操作时,不允许其他⽤户连接数据库。
问题⼀解决办法:右键点击数据库 -> 属性 -> 选项 -> 状态 -> 限制访问 -> 选择Multiple -> 确定。
问题⼆解决办法:⽅法⼀(最⽅便):右键点击数据库 -> 属性 -> 选项 -> 状态 -> 限制访问 -> 选择Single-> 确定。
然后还原。
⽅法⼆(最直接):断开数据库连接⽅法三(最暴⼒):注销/重启数据库服务器⽅法四(最⿇烦):写代码修改数据库相关属性,虽然⿇烦,有的时候还是要⽤到,那就⽤到的时候再研究。
①先切换数据库到master数据库。
执⾏语句select * from master..sysprocesses where dbid=db_id( '数据库名称')②然后逐步运⾏语句 exec kill spid(上⼀步结果集中的数据),问题就解决了。
哈哈今天在还原数据库的时候,提⽰"因为数据库正在使⽤,所以⽆法获得对数据库的独占访问权",⽆论我是重启数据库,还是重启计算机,都不能解决问题,多番尝试后,终于解决了该问题。
sqlserver数据库表结构SQL Server数据库表结构详解一、用户表(user)用户表是一个常见的数据库表结构,用于存储系统中的用户信息。
该表通常包含以下字段:1. 用户ID(user_id):用于唯一标识每个用户的ID,通常为自增长的整数类型。
2. 用户名(username):用户的登录名,通常为字符串类型,长度限制根据具体需求而定。
3. 密码(password):用户的登录密码,通常为加密后的字符串类型。
4. 姓名(name):用户的真实姓名,通常为字符串类型。
5. 性别(gender):用户的性别,通常为枚举类型,如男、女等。
6. 手机号(phone):用户的手机号码,通常为字符串类型,长度限制根据具体需求而定。
7. 邮箱(email):用户的电子邮箱地址,通常为字符串类型,长度限制根据具体需求而定。
二、订单表(order)订单表用于存储用户的订单信息,包含以下字段:1. 订单ID(order_id):用于唯一标识每个订单的ID,通常为自增长的整数类型。
2. 用户ID(user_id):关联用户表的用户ID,表示该订单属于哪个用户。
3. 订单编号(order_number):订单的编号,通常为字符串类型,长度限制根据具体需求而定。
4. 下单时间(create_time):订单的创建时间,通常为日期时间类型。
5. 订单金额(amount):订单的总金额,通常为浮点数类型,表示订单应付的金额。
6. 支付状态(payment_status):订单的支付状态,通常为枚举类型,如未支付、已支付等。
三、商品表(product)商品表用于存储系统中的商品信息,包含以下字段:1. 商品ID(product_id):用于唯一标识每个商品的ID,通常为自增长的整数类型。
2. 商品名称(product_name):商品的名称,通常为字符串类型,长度限制根据具体需求而定。
3. 商品价格(price):商品的价格,通常为浮点数类型,表示商品的单价。
SQL SERVER 2000 个人版SQL SERVER 2000 个人版:介绍与功能概述概述SQL Server 2000 个人版是 Microsoft SQL Server 数据库管理系统的一种版本,专为个人用户而设计。
它是一种轻量级的数据库解决方案,提供了高效可靠的数据管理和查询功能。
SQL Server 2000 个人版功能1. 数据管理和存储SQL Server 2000 个人版提供了可靠的数据管理和存储功能,使用户能够轻松地创建、修改和删除数据库,以及对数据库进行备份和恢复。
它支持数据的持久化存储,并通过事务管理确保数据的完整性和一致性。
2. 数据查询和报表SQL Server 2000 个人版提供了强大的查询功能,允许用户使用结构化查询语言(SQL)进行数据检索和筛选。
用户可以通过编写复杂的查询语句来检索特定的数据,并根据需要生成报表和统计数据。
3. 安全性和权限控制SQL Server 2000 个人版提供了严格的安全性和权限控制功能,帮助用户保护数据库中的敏感数据。
用户可以设置不同的访问权限和角色,限制特定用户或用户组对数据库的操作。
4. 数据复制和同步SQL Server 2000 个人版支持数据复制和同步功能,允许用户在多个数据库之间实现数据的复制和同步。
这对于需要在不同地点或不同环境中使用相同数据的用户非常有用。
5. 扩展性和可定制性SQL Server 2000 个人版提供了扩展性和可定制性功能,允许用户根据自己的需求进行个性化设置。
用户可以根据需要添加或移除数据库对象,调整数据库的大小和性能参数,并使用自定义的存储过程和函数扩展数据库的功能。
6. 故障恢复和自动备份SQL Server 2000 个人版提供了故障恢复和自动备份功能,保护用户的数据库免受系统崩溃和数据丢失的影响。
它支持事务日志和数据库备份,并提供了快速恢复和故障转移的能力。
7. 兼容性和易用性SQL Server 2000 个人版与其他版本的 SQL Server 兼容,用户可以轻松迁移和共享数据。
sql server附加数据库时出现错误提示:错误:9004 处理数据库的日志时出错先把原库文件备份一份,然后在其它机器上直接附加数据库,不要日志文件!试试!如果不行再按以下方法试试!在其他机器上,用这个试试: 1.设置数据库为紧急模式Use MasterGOsp_configure 'allow updates', 1reconfigure with overrideGOUPDATE sysdatabases SET status = 32768 where name = 'DB_SUSPECT' GO2.停掉SQL Server服务:NET STOP MSSQLSERVER3.把原始数据库的数据文件DBNAME_DA T.MDF,DBNAME_LOG.LDF移走:4.启动SQL Server服务:NET START MSSQLSERVER5.重新建立一个同名的数据库DB_SUSPECT;USE masterGOCREATE DATABASE DB_SUSPECTON( NAME = DBNAME_DA T,FILENAME = 'C:',SIZE = 10,FILEGROWTH = 5 )LOG ON( NAME = 'DBNAME_LOG',FILENAME = 'g:',SIZE = 5MB,FILEGROWTH = 5MB )GO6.设置数据库运行在单用户的模式:USE MASTERGOALTER DATABASE DB_SUSPECT SET SINGLE_USERGO7.停掉SQL服务:NET STOP MSSQLSERVER8.把原来的数据文件再覆盖回来:9.启动SQL Server服务:NET START MSSQLSERVER10.重新设置SQLSERVER的状态:USE MASTERGOEXEC sp_resetstatus "DB_SUSPECT"11.数据库完整性检测:DBCC CHECKDB('DB_SUSPECT')12.恢复数据库为多用户模式:USE MASTERGOALTER DATABASE DB_SUSPECT SET MULTI_USERGO13.恢复SQLSERVER原始的配置:USE MA TERGOUPDATE sysdatabases SET status = 4194320 where name = 'DB_SUSPECT' GO14.配置SQLSERVER不允许更新系统表:USE MASTERGOsp_configure 'allow updates', 0reconfigure with overrideGO15.重新启动MSSQLSERVER服务:最好重新启动操作系统16.备份数据库:可以通过SQLSERVER企业管理器或T-SQL.需要备份MASTER和DB_SUSPECT。
SQLServer企业版标准版个人版的区别?对于新接触SQL数据库的人来说,类似这几个问题的有关于SQL 版本的问题可以说不少,但又懒得去仔细研究。
问题虽然简单,可是影响却不小……版本区别SQL Server 2000有四个版本:企业版/标准版/个人版/开发版企业版和标准版需要安装在服务器操作系统上,如Windows NT Server / Windows 2000 Server / Windows 2003 Server 等。
个人版需要安装在个人操作系统上,如Windows98 / Windows 2000 Professional / Windows XP Home / Windows XP Professional 等。
开发版可以安装在任何微软的操作系统上。
SQL Server 2000 企业版作为生产数据库服务器使用。
支持 SQL Server 2000 中的所有可用功能,并可根据支持最大的Web 站点和企业联机事务处理(OLTP) 及数据仓库系统所需的性能水平进行伸缩。
SQL Server 2000 标准版作为小工作组或部门的数据库服务器使用。
SQL Server 2000 个人版供移动的用户使用,这些用户有时从网络上断开,但所运行的应用程序需要SQL Server 数据存储。
在客户端计算机上运行需要本地SQL Server 数据存储的独立应用程序时也使用个人版。
SQL Server 2000 开发版供程序员用来开发将 SQL Server 2000 用作数据存储的应用程序。
虽然开发版支持企业版的所有功能,使开发人员能够编写和测试可使用这些功能的应用程序,但是只能将开发版作为开发和测试系统使用,不能作为生产服务器使用。
SQL Server 2000 Windows CE 版使用Microsoft® SQL Server 2000™ Windows® CE 版 (SQLServer CE) 在Windows CE 设备上进行数据存储。
大多数服务及其属性可通过使用SQLServer配置管理器进行配置。
以下是在C盘安装Windows 的情况下最新的四个版本的路径。
安装的服务SQLServer根据您决定安装的组件,SQLServer安装程序将安装以下服务:•SQLServerDatabaseServices-用于SQLServer关系数据库引擎的服务。
可执行文件为<MSSQLPATH>\MSSQL\Binn\sqlservr.exe。
•SQLServer代理-执行作业、监视SQLServer、激发警报以及允许自动执行某些管理任务。
SQLServer代理服务在SQLServerExpress的实例上存在,但处于禁用状态。
可执行文件为<MSSQLPATH>\MSSQL\Binn\sqlagent.exe。
•AnalysisServices-为商业智能应用程序提供联机分析处理(OLAP)和数据挖掘功能。
可执行文件为<MSSQLPATH>\OLAP\Bin\msmdsrv.exe。
•ReportingServices-管理、执行、创建、计划和传递报表。
可执行文件为<MSSQLPATH>\ReportingServices\ReportServer\Bin\ReportingServicesService.exe。
•IntegrationServices-为IntegrationServices包的存储和执行提供管理支持。
可执行文件的路径是<MSSQLPATH>\130\DTS\Binn\MsDtsSrvr.exe•SQLServerBrowser-向客户端计算机提供SQLServer连接信息的名称解析服务。
可执行文件的路径为c:\ProgramFiles(x86)\MicrosoftSQLServer\90\Shared\sqlbrowser.exe •全文搜索-对结构化和半结构化数据的内容和属性快速创建全文索引,从而为SQLServer 提供文档筛选和断字功能。
1、操作SQL Server数据库出现数据库名后加单个用户的情况,解决办法:
在企业管理器—数据库—右键—属性—选项(限止访问(把钩去掉就行了)
2、删除一个数据库时报错,大意是:此数据库处理单用户模式,尚在连接当中,无法删除(既使将SQLServer停止后再启动也是如此)
解决办法:
先在master中创建一个存储过程,用于干掉所有连接。
USE[master]
GO
/****** Object: StoredProcedure [dbo].[killspid] Script Date:
04/11/2014 11:01:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*过程:断开所有用户连接*/
create proc[dbo].[killspid](@dbname varchar(20))
as
begin
declare@sql nvarchar(500)
declare@spid int
set@sql='declare getspid cursor for
select spid from sysprocesses where
dbid=db_id('''+@dbname+''')'
exec (@sql)
open getspid
fetch next from getspid into@spid
while@@fetch_status<>-1
begin
exec('kill '+@spid)
fetch next from getspid into@spid
end
close getspid
deallocate getspid
end
GO
然后调用。
use master
exec killspid '出问题的数据库名'
再删除就ok了。