一个经得起时间考验的人
数据库
在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 操作系统上运行。
关于限制firefox3中urlclassifier3.sqlite文件大小
十 14th
在限制Firefox中urlclassifier3.sqlite文件大小的方法一文提出了通过设置"urlclassifier.updatecachemax"来限制urlclassifier3.sqlite文件大小的方法,不过经过测试发现此方法无效.
通过测试发现当我把urlclassifier.updatecachemax设置为104857600 (即100MB),然后将firefox3配置目录下的urlclassifier3.sqlite删除,随后经过一段时间,发现urlclassifier3.sqlite的大小为55036KB,小于100MB。
随后我再把urlclassifier.updatecachemax设置为10485760 (即10MB),然后再把firefox3配置目录下的urlclassifier3.sqlite删除,随后经过一段时间后,发现urlclassifier3.sqlite的大小为55036KB,已经远远超过设定的 10MB了。
所以通过设置"urlclassifier.updatecachemax"来限制urlclassifier3.sqlite文件大小的方法行不通了。
不过在我使用firefox3的过程中,发现urlclassifier3.sqlite的大小一直在50MB左右,所以大家也不用太担心此文件了。
BTW:urlclassifier3.sqlite文件用于记录Firefox从Google抓取的反钓鱼网站和恶意站点数据的,但一般情况下他会不断增长。
实现数据库的版本控制的思路
八 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 个聚集索引 |
关于Firefox3的反钓鱼数据库urlclassifier3.sqlite
五 27th
urlclassifier3.sqlite是Firefox3生成的反钓鱼数据库,而urlclassifier2.sqlite则是Firefox2的反钓鱼数据库.
urlclassifier3.sqlite位于“D:\Documents and Settings\Administrator\Local Settings\Application Data\Mozilla\Firefox\Profiles\随机字符串.default\urlclassifier3.sqlite”
而urlclassifier2.sqlite位于“D:\Documents and Settings\Administrator\Application Data\Mozilla\Firefox\Profiles\随机字符串.default”
不过Firefox3生成的这个数据库的体积有点吓人,比如我安装的Firefox生成的urlclassifier3.sqlite达到了53M,而且还有增长的趋势。
在查看了MozillaZine Knowledge Base知识库后,发现这个数据库是Firefox3从Google的一个服务中获取的(可以在about:config中查找“urlclassifier.keyupdatetime”):
https://sb-ssl.google.com/safebrowsing/newkey
而且发现有个参数“urlclassifier.updatecachemax”应该是控制urlclassifier3.sqlite文件的大小的:
Firefox incorporates the Google Safe Browsing extension in its own Phishing Protection feature to detect and warn users of phishy web sites.
In Linux, the periodic updates for the blacklist caused significant amounts of disk activity due to index and cache sizes for the underlying SQLite database. This preference controls a maximum cache size for SQLite that cuts down on the amount of disk activity required during an update.
Maximum size of the SQLite cache during an update, in bytes. Default in Linux is 104857600 (100 MB); elsewhere, -1 (SQLite default).
Sql Server 2000附加数据库出现1813错误的解决方法
五 14th
今天进行了一错误操作。
数据库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’ 覆盖掉新建的数据库
5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)
- use master
- go
- sp_configure ‘allow updates’,1 reconfigure with override
- go
- update sysdatabases set status =32768 where name=‘置疑的数据库名’
- go
- sp_dboption ‘置疑的数据库名’, ‘single user’, ‘true’
- go
- dbcc checkdb(‘置疑的数据库名’)
- go
- update sysdatabases set status =28 where name=‘置疑的数据库名’
- go
- sp_configure ‘allow updates’, 0 reconfigure with override
- go
- sp_dboption ‘置疑的数据库名’, ‘single user’, ‘false’
- go