DataBase

在Windows XP 中安装SQL SERVER 2000企业版

SQL Server 2000企业版、标准版都只能安装于服务器版的操作系统中,而能够在Windows XP上安装的有个人版、开发版、MSDE(Microsoft SQL Server Desktop Engine),大家通过搜索引擎找到的这方面的文章最终安装的其实是MSDE加上企业管理器。

MSDE 与 SQL SERVER 最主要的区别是
1、MSDE 没有图形化的用户操作界面,但是可以通过安装企业版中的企业管理器来管理MSDE。
2、MSDE 的并发数只有25个。当使用 SQL Server 2000 Desktop Engine 或 Microsoft 数据引擎 (MSDE) 1.0 时,单个数据库的数据文件大小不能超过 2 GB(数据文件+日志文件的大小可以大于2GB)。
3、MSDE 是免费的, SQL SERVER 是收费的。

MSDE各SQL Server个人版中特有的一个功能并发控制:DBCC CONCURRENCYVIOLATION的使用说明
Transact-SQL Reference (SQL Server 2000)
DBCC CONCURRENCYVIOLATION

在Windows XP 中安装MSDE后SA是无法通过登陆的(但是使用Windows身份验证是没有问题的),因为你还没有与信任SQL SERVER连接相关联。这个需要对系统注册表进行修改:
    在运行中输入regedit打开注册表编辑器,找到[HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\MSSQLSERVER\MSSQLSERVER],这个项里面有一个键值LoginMode,默认下,值是1,现在将值改为2,重启电脑。
    再打开企业管理,使用SA连接MSDE,是不是OK了。

附上SQL Server 2000的联机丛书的部分内容:

SQL Server 2000 的各种版本所支持的操作系统

下表列出各 Microsoft® SQL Server™ 2000 版本支持的运行服务器软件的操作系统。

操作系统 企业版 标准版 个人版 开发版 Desktop Engine (MSDE 2000) SQL Server CE 企业评估版
Microsoft Windows® Server 2003 DataCenter Edition 支持 支持 支持 支持 支持 暂缺 支持
Windows Server 2003 Enterprise Edition 支持 支持 支持 支持 支持 暂缺 支持
Windows Server 2003 Standard Edition 支持 支持 支持 支持 支持 暂缺 支持
Windows Server 2003 Web Edition 暂缺 暂缺 N/A N/A 支持 N/A N/A
Windows XP Professional Edition N/A N/A 支持 支持 支持 暂缺 支持
Windows XP Home Edition N/A N/A 支持 支持 支持 N/A 支持
Microsoft Windows 2000 DataCenter 支持 支持 支持 支持 支持 N/A 支持
Windows 2000 Advanced Server 支持 支持 支持 支持 支持 暂缺 支持
Windows 2000 Server 支持 支持 支持 支持 支持 暂缺 支持
Windows 2000 Professional 暂缺 暂缺 支持 支持 支持 暂缺 支持
Microsoft Windows NT® 4.0 Server 企业版 支持 支持 支持 支持 支持 N/A 支持
Windows NT 4.0 Server 支持 支持 支持 支持 支持 N/A 支持
Windows NT 4.0 Workstation N/A N/A 支持 支持 支持 N/A 支持
Microsoft Windows Millennium Edition N/A N/A 支持 N/A 支持 N/A N/A
Microsoft Windows 98 暂缺 暂缺 支持 暂缺 支持 暂缺 暂缺
Microsoft Windows CE 暂缺 暂缺 暂缺 暂缺 暂缺 支持 暂缺

说明  来自除 SQL Server Windows CE 外的所有 SQL Server 2000 版本的客户端软件可在任何版本的 Microsoft Windows NT、Microsoft Windows 2000、Microsoft Windows Server 2003、Windows Millennium Edition 和 Microsoft Windows 98 上运行。只有服务器组件(如数据库引擎和分析服务器)必须在特定版本的操作系统上使用。例如,虽然 SQL Server 2000 企业版不在 Windows 2000 Professional、Windows NT Workstation 或 Windows 98 上运行,但是也能使用 SQL Server 2000 企业版光盘在这些操作系统上安装客户端软件。SQL Server 2000 中文版不支持英文版的 NT 4.0 企业版。

来自 SQL Server CE 的所有软件以独占方式在 Windows CE 操作系统上运行。

SQL Server 2000联机丛书不能打开文件:SQL80.col

将SQL Server 2000升级后打开联机丛书时出现如下错误提示:

—————————
SQL Server 2000 联机丛书
—————————
帮助
—————————
不能打开文件: D:\Program Files\Microsoft SQL Server\80\Tools\Books\SQL80.col 。
—————————

经过实验发现将 SQL Server 2000 联机丛书 重新安装即能解决“打开文件:SQL80.col”的问题(至于原因,则不明白)。

最新的 SQL Server 2000 联机丛书 的下载地址如下:

 联机丛书 下载详细信息页面
http://www.microsoft.com/downloads/details.aspx?familyid=A6F79CB1-A420-445F-8A4B-BD77A7DA194B&displaylang=zh-cn

联机丛书 直接下载地址
http://download.microsoft.com/download/7/b/5/7b5ff59f-1824-4808-b8ff-6bb719b40b5a/sqlbolsetup.msi
或者
http://www.microsoft.com/downloads/thankyou.aspx?familyId=a6f79cb1-a420-445f-8a4b-bd77a7da194b&displayLang=zh-cn

Mysql:Can’t open file: ‘tabelname_sids.ibd’ (errno: 1)

在使用ADManager Plus的过程中发现启动Mysql数据库时出现如下错误:
D:\AdventNet\ADManager Plus\bin\mysql\bin\mysqld-nt:
Can’t open file: ‘tabelname_sids.ibd’ (errno: 1)

而在使用mysqldump备份整个数据库adsm时则提示Can’t open file: ‘tabelname_sids.ibd’ 无法锁定数据表tabelname。

在Mysql的官方论坛还找到一个相关的帖子:Can’t open file ****.ibd (errno: 1)。不过在Mysql的错误日志“计算机名.err”中的提示更详细(英文原文被我不小心删掉了,解释一下大概的意思):

在删除Mysql数据库中的表时发生错误引起表的结构定义文件 .frm 未删除,找到对应的 tablename.frm 删掉就OK了。

小知识
MYSQL使用.frm文件恢复数据表(Innodb和Myisam)结构. 英文原文(Recovering CREATE TABLE statement from .frm file),

frm、MYI、MYD分别对应MyISAM表的表结构\索引\数据文件

SQL Server企业管理器:不能产生 SSPI 上下文

在"SQL Server 2000企业管理器"打开曾经设置好的数据库服务器的连接时,出现以下错误提示:

—————————
SQL Server 企业管理器
—————————
未能建立与 SQLCLUSTER02\SQLDATA02 的连接。

原因: 不能产生 SSPI 上下文。

请验证 SQL Server 是否在运行并检查  SQL Server 注册属性(通过右击 SQLCLUSTER02\SQLDATA02 节点),然后重试。
—————————

解决方案:
       修改注册在"SQL Server 2000企业管理器"中的数据库服务器连接的注册属性,重新输入密码。

参考文章:
如何排查“Cannot generate SSPI context”(无法生成 SSPI 上下文)错误消息

SQL Server 2000 各种对象的最大值(数量或大小)

管理的一个数据库大小将近10G,开始担心数据库会不会过大,查询SQL Server的联机丛书后发现自己的担心真的是多余的。

SQL Server 2000数据库文件大小(数据、日志)最大可以支持 32 TB 的文件

截取SQL Server 2000联机丛书中的最大容量说明方便大家查阅。

SQL Server数据库各对象的最大容量说明

下表说明在 Microsoft SQL Server 数据库中定义的,或在 Transact-SQL 语句中引用的各种对象的最大值(数量或大小)。下表不包含 Microsoft® SQL Server 2000™ Windows® CE 版。

  最大值(数量或大小)
对象 SQL Server 7.0 SQL Server 2000
批处理大小 65,536 * 网络数据包大小1 65,536 * 网络数据包大小1
每个短字符串列的字节数 8,000 8,000
每个 textntext、或 image 列的字节数 2 GB-2 2 GB-2
每个 GROUP BY、ORDER BY的字节数 8,060  
每个索引中的字节数 900 9002
每个外键的字节数 900 900
每个主键的字节数 900 900
每行字节数 8,060 8,060
存储过程源文本中的字节数 批处理大小之较小者或者 250 MB 批处理大小之较小者或者 250 MB
每个数据表的聚集索引数 1 1
GROUP BY、ORDER BY 中的列数 只受字节数限制  
GROUP BY WITH CUBE 或 WITH ROLLUP 语句中的列数或表达式数目 10  
每个索引的列数 16 16
每个外键的列数 16 16
每个主键的列数 16 16
每个基础数据表的列数 1,024 1,024
每个SELECT 语句的列数 4,096 4,096
每个INSERT 语句的列数 1,024 1,024
每个客户端的连接个数 已配置连接的最大值 已配置连接的最大值
数据库大小 1,048,516 TB3 1,048,516 TB3
每个 SQL Server 实例的数据库个数 32,767 32,767
每个数据库的文件组个数 256 256
每个数据库的文件个数 32,767 32,767
文件大小(数据) 32 TB 32 TB
文件大小(日志) 4 TB 32 TB
每个数据表的外键表引用 253 253
标识符长度(以字符计) 128 128
每台计算机的实例数 暂缺 16
包含 SQL 语句的字符串长度(批处理大小) 65,536 * 网络数据包大小1 65,536 * 网络数据包大小1
每个连接的锁数 每个服务器的最大锁数 每个服务器的最大锁数
每个 SQL Server 实例的锁数 2,147,483,647(静态)
SQL Server 40% 的内存(动态)
2,147,483,647(静态)
SQL Server 40% 的内存(动态)
嵌套存储过程层数 32 32
嵌套子查询 32 32
嵌套触发器层数 32 32
每个数据表的非聚集索引个数 249 249
SQL Server 实例中同时打开的对象个数4 2,147,483,647(或可用内存) 2,147,483,647(或可用内存)
每个数据库中的对象个数 2,147,483,6474 2,147,483,6474
每个存储过程的参数个数 1,024 1,024
每个数据表的 REFERENCE 个数 253 253
每个数据表的行数 受可用存储资源限制 受可用存储资源限制
每个数据库的数据表个数 受数据库中的对象个数限制4 受数据库中的对象个数限制4
每个 SELECT 语句的数据表个数 256 256
每个数据表的触发器个数 受数据库中的对象个数限制4 受数据库中的对象个数限制4
每个数据表的 UNIQUE 索引个数或约束个数 249个非聚集索引和 1 个聚集索引 249个非聚集索引和 1 个聚集索引

 

Sql Server 2000附加数据库出现1813错误的解决方法

今天进行了一错误操作。

数据库xxzx_discuz,因生成大量日志使日志文件’xxzx_discuz_Log.LDF’ 占满了磁盘所有空间,使网站无法正常使用数据库。

自己图省事分离数据库xxzx_discuz后,直接删除’xxzx_discuz_Log.LDF’ (因为文件太大,无法存放到回收站),重新附件到SQL Server时出现两个提示:
——————————————————————————————————————————
SQL Server 企业管理器
—————————
为日志文件指定的文件名不正确。
将创建新的日志文件。
要继续吗?
—————————
是(Y)   否(N)  
——————————————————————————————————————————
Microsoft SQL-DMO (ODBC SQLState: 42000)
—————————
错误 1813: 未能打开新数据库 ‘xxzx_discuz’。CREATE DATABASE 将终止。
设备激活错误。物理文件名 ‘S:\Program Files\Microsoft SQL Server\MSSQL\data\xxzx_discuz_Log.LDF’ 可能有误。
—————————
确定  
——————————————————————————————————————————

从而无法将数据库正常附加到SQL Server 2000,正常情况下这样操作是没有问题的,SQL Server会重新生成日志文件,但是因为之前出现了磁盘空间不足,日志文件不完整,从而造成了无法正常附加。

解决办法如下(从网上找来的):

0.备份数据文件‘xxzx_discuz_Log.MDF’
1.新建一个同名的数据库‘xxzx_discuz’ 

2.再停掉sqlserver服务(注意不要分离数据库)
3.用原数据库的数据文件‘xxzx_discuz_Log.MDF’ 覆盖掉新建的数据库

 
4.再重启sqlserver服务
5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)
6.完成后一般就可以访问数据库中的数据了。这时,数据库本身一般还有问题,解决办法是:利用数据库的脚本创建一个新的数据库,然后通过DTS将数据导进去就行了.
SQL代码
  1. use master   
  2. go   
  3. sp_configure ‘allow updates’,1 reconfigure with override   
  4. go   
  5. update sysdatabases set status =32768 where name=‘置疑的数据库名’  
  6. go   
  7. sp_dboption ‘置疑的数据库名’’single user’‘true’  
  8. go   
  9. dbcc checkdb(‘置疑的数据库名’)    
  10. go   
  11. update sysdatabases set status =28 where name=‘置疑的数据库名’  
  12. go   
  13. sp_configure ‘allow updates’, 0 reconfigure with override   
  14. go    
  15. sp_dboption ‘置疑的数据库名’’single user’‘false’  
  16. go  
 
特别注意最后一步中的说明“这时,数据库本身一般还有问题,解决办法是:利用数据库的脚本创建一个新的数据库,然后通过DTS将数据导进去就行了