一个经得起时间考验的人
SQL Server
Discuz NT:将 expression 转换为数据类型 int 时发生算术溢出错误
七 21st
Discuz NT在运行一段时间后,出现黄页错误,提示的错误信息为:
将 expression 转换为数据类型 int 时发生算术溢出错误
两个解决办法如下:
方案一:把dnt_online.tickcount 字段变为了bigint类型。
方案二:在查询分析器中运行“truncate table discuzbbs.dnt_online” 将dnt_online表的记录清除,或者在SQL Server中创建每天运行的任务来执行此语句。
在Windows XP 中安装SQL SERVER 2000企业版
四 18th
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
三 24th
将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
SQL Server企业管理器:不能产生 SSPI 上下文
三 4th
在"SQL Server 2000企业管理器"打开曾经设置好的数据库服务器的连接时,出现以下错误提示:
—————————
SQL Server 企业管理器
—————————
未能建立与 SQLCLUSTER02\SQLDATA02 的连接。
原因: 不能产生 SSPI 上下文。
请验证 SQL Server 是否在运行并检查 SQL Server 注册属性(通过右击 SQLCLUSTER02\SQLDATA02 节点),然后重试。
—————————
解决方案:
修改注册在"SQL Server 2000企业管理器"中的数据库服务器连接的注册属性,重新输入密码。
实现数据库的版本控制的思路
八 7th
数据库的版本控制与代码版本控制的区别在于数据库中的生产数据是现场创造的,当我们的表结构发生改变时,不能直接用drop table然后再create table,因为这样会导致生产数据丢失。而代码则完全由开发人员创造,可以用完全覆盖的方式升级。由于这点不同,致使数据库在版本控制的过程中必然要采用与代码不同的方法。
软件过程有一个过程方法叫迭代过程。对数据库的版本化,我们也可以采用这种类似的方法——后一个版本的脚本依赖于前一个版本的脚本,即当你要把数据库升级到第n个版本时,你必须先把数据库升级到第(n-1)个版本,以此递归。
我对对于数据库版本化的具体思路如下:
1.只存在一个基线版本;
2.在基线版本后的修改都是修正版本;
3.版本号遵从的格式通常是:主版本号.次版本号.修正号
修正版本SQL脚本的命名规则(表,视图,存储过程,用户,角色,规则,默认值,用户定义的数据类型,用户定义的函数,全文目录);
a.涉及表、视图、存储过程、触发器的增加 版本号为:V1.1.0.0。(主版本号不变,次版本号加一,修正号归零)
b.涉及表、视图、存储过程、触发器的更改、删除 版本号为:V1.2.1.0。(主版本号和次版本号不变,修正号加一)
c.向表中增加、删除初始化数据的变化 版本号为:V1.2.1.1。(在修正号后增加一个标识)
4.SQL脚本的格式:
每一个版本号为一个目录,目录下分别存放处理表、视图、存储过程等的SQL脚本;
/Database
├─V1.0.0.0
│ Full-Text.sql
│ Procedures.sql
│ Tables.sql
│ Views.sql
│
├─V1.1.0.0
│ Tables.sql
│ Views.sql
│
├─V1.1.1.0
│ Full-Text.sql
│ Procedures.sql
│ Tables.sql
│ Views.sql
│
├─V1.1.1.1
│ Tables.sql
│
└─V1.1.2.0
Full-Text.sql
Procedures.sql
Tables.sql
Views.sql
5.关于数据库中的版本说明及更新记录:
在每个数据库中新建一个表,名称为DBVersion,用于记录数据库经历的版本记录以及最新的版本信息;
- if exists (select * from dbo.sysobjects where id = object_id(N‘[dbo].[DBVersion]‘) and OBJECTPROPERTY(id, N‘IsUserTable’) = 1)
- drop table [dbo].[DBVersion]
- GO
- CREATE TABLE [dbo].[DBVersion] (
- [DB_ID] [int] IDENTITY (1, 1) NOT NULL ,
- [DB_Version] [varchar] (16) COLLATE Chinese_PRC_CI_AS NOT NULL ,
- [DB_Update_Time] [datetime] NOT NULL ,
- [DB_Remark] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL
- ) ON [PRIMARY]
- GO
6.编写程序以实现以下功能:
读取Database目录的各个版本中的SQL文件,以实现升级或者新建数据。
对于升级数据库需要能够根据DBVersion表中的信息自动选择需要导入的SQL文件;或者提示用户当前可以升级到哪一些版本。
同时还需要有校验Database中版本的文件是否完整(包括版本完整和文件完整,这就需要存在一个校验文件);
参考Linux内核版本号的命名规则:
Linux内核 版本号命名规则
Linux内核的版本号是有一定的规则的,版本号遵从的格式通常是:主版本号.次版本号.修正号。
主版本号和次版本号标志着重要的功能变动;修正号表示较小的功能变动。
以2.6.12版本为例,
2代表主版本号,6代表次版本号,12代表修正号。
其中次版本号还有特定的意义:如果次版本
号是偶数,则表示该内核是一个可放心使用的稳定版;如果次版本号是奇数,则表示该内核加
入了一些测试的新功能,是一个内部可能存在BUG的测试版
。如:2.5.74表示是一个测试版就的内核,2.6.12表示是一个稳定版的内核。
我们可以从Linux官方网站上:http://www.kernel.org/下载最新的内核代码!
SQL Server 2000 各种对象的最大值(数量或大小)
六 17th
管理的一个数据库大小将近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 |
| 每个 text、ntext、或 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 个聚集索引 |