Microsoft MSDE 的配置实践






4.87/5 (132投票s)
2004年11月14日
11分钟阅读

628225

1
一篇关于如何安装和配置 MSFT MSDE 2000 的文章。
引言
本文档介绍如何配置 Microsoft MSDE 数据库引擎。以下是文章的主题概述。
- 什么是 MSDE?
- 限制
- 您将获得什么
- 如何安装和配置 MSDE
- setup.exe 文件的参数
- 使用“setup.ini”文件
- 重新配置后
- 配置服务器
- 配置客户端
- 启动它!
- 如何确定我正在运行的版本?
- 创建和删除数据库
- 如何列出系统上的所有数据库?
- 如何从系统中分离数据库?
- 如何将数据库附加到系统中?
- 如何列出数据库中的所有表?
- 数据库用户
- 添加具有 SQL 身份验证的新用户
- 使用 Windows 身份验证
- 如何列出数据库中的所有用户和角色?
- 如何从数据库中删除用户?
- 退出 osql
什么是 MSDE?
MSDE 是 Microsoft SQL Server 的一个简化版本。简而言之,它就是 Microsoft SQL Server 2000 数据库引擎,但没有华丽的用户界面工具,并且在数据库大小和连接数方面有一些限制。MSDE 数据库是免费的,可以作为您自己应用程序的嵌入式组件分发,或者作为一个小型独立 SQL 服务器。它非常适合用户数少于 25 个并发连接的小型网站和小型企业。数据库的数据存储空间限制为 2 GB,但您可以轻松地将其升级到功能齐全、无任何限制的 Microsoft SQL Server。可选的有标准版或企业版。MSDE 数据库是任何企业、组织甚至家庭解决方案的一个良好且经济实惠的起点。数据库不必安装在部署计算机的硬盘上,也可以从 CD-ROM 运行。
限制
MSDE 数据库存在一些限制。您将无法获得
- 故障转移群集。
- 日志传送。
- 并行 DBCC。
- 并行创建索引。
- 增强的预读和扫描。
- 索引视图。
- 联邦数据库服务器。
- 系统区域网络支持 (SAN)。
- 图形化 DBA、开发人员工具和向导。
- 全文搜索。
- Analysis Services。
- OLAP 分区。
- 分区向导。
- 链接的 OLAP 多维数据集。
- ROLAP 维度支持。
- HTTP Internet 支持。
- 自定义汇总。
- 计算成员。
- 写入维度。
- 非常大的维度支持。
- 操作。
- 实时 OLAP。
- 分布式分区多维数据集。
- 数据挖掘。
- 英文查询。
您将获得什么
这是您将获得的内容
- 处理器最大数:NT/Win2000/XP/2003 为 2 个,Win98/ME 为 1 个。
- 物理内存最大值:2 GB。
- 用户连接最大数:5 个,之后工作负载调节器将限制性能。
- 数据存储最大值:2 GB。
- 桌面嵌入式或网络访问。
- 领先的 SQL 数据库性能。
- 免费。=:-)
如何安装和配置 MSDE
您可以从 Microsoft 网站免费下载 MSDE。下载存档并将其解压缩到硬盘上的一个文件夹。根据您希望访问数据库的方式,有四种不同的运行 MSDE 的方法。它们都列在下面。
您可以通过三种不同的方式配置 MSDE
- setup.exe 文件的参数。
- 使用“setup.ini”文件。
- 重新配置后。
四种不同的运行模式是
- Windows 身份验证,无网络访问。
- Windows 身份验证,带网络访问。
- 混合 Windows 和 SQL 模式身份验证,无网络访问。
- 混合 Windows 和 SQL 模式身份验证,带网络访问。
请尽可能使用 Windows 身份验证。SQL 模式会将用户名和密码信息以明文形式通过网络发送。这意味着它们可能会被入侵者或黑客窃听。Windows 身份验证使用 SSPI,您可以在以下网页上了解更多信息:MSDN [1] 和 MSDN [2]。默认安装会禁用网络访问并使用 Windows 身份验证模式。
在开始安装 MSDE 之前,请禁用 Norton Antivirus 和 Internet Security Pack。安装完成后再启用它们。当启用时,Norton Antivirus 将不允许您成功安装 MSDE。
在我们的所有示例中,我们将使用“password”作为系统管理员,并将“myinstance”作为数据库实例。
setup.exe 文件的参数
您可以通过在命令提示符下向 setup.exe 文件传递参数来配置 MSDE。
Windows 身份验证,带网络访问。
示例 1(通过网络进行 Windows 访问)。
在此示例中,我们将使用 Windows 身份验证,因为我们不想通过网络以明文形式发送用户名和密码。只有 Windows 应用程序和 .NET 应用程序可以访问数据库。应用程序会自动使用客户端计算机上的登录名和密码登录到 MSDE。
C:\...MSDE\>Setup.exe DISABLENETWORKPROTOCOLS=0
SAPWD="password "INSTANCENAME="myinstance"
混合 Windows 和 SQL 模式身份验证,带网络访问。
示例 2(通过网络进行 Java 和 Windows 访问)
在此示例中,我们将使用混合模式身份验证,因为我们希望通过网络从 Windows 应用程序和 Java 应用程序访问数据库。用户名和密码将以明文形式通过网络发送。
C:\...MSDE\>Setup.exe DISABLENETWORKPROTOCOLS=0
SAPWD="password " INSTANCENAME="myinstance" SECURITYMODE=SQL
混合 Windows 和 SQL 模式身份验证,无网络访问。
示例 3(仅本地 Java 和 Windows 访问)
在此示例中,我们不会授予网络访问权限。只有本地应用程序可以访问数据库。我们将为 Java 应用程序使用混合模式身份验证。
C:\...MSDE\>Setup.exe SAPWD="password "INSTANCENAME="myinstance" SECURITYMODE=SQL
Windows 身份验证,无网络访问
示例 4(仅本地 Windows 访问)
在此示例中,我们不会授予数据库网络访问权限。我们也只会授予 Windows 身份验证访问权限。这是最安全的设置,适用于嵌入式 MSDE 应用程序。
C:\...MSDE\>Setup.exe SAPWD="password " INSTANCENAME="myinstance"
使用“setup.ini”文件
如果您想使用预配置的设置文件,将在 MSDE 文件夹中找到一个名为“setup.ini”的文件。请记住,如果这是一个问题,任何有权访问此文件的人都可以看到系统管理员密码。文件内容如下:
[Options]
在此处输入配置参数。
混合 Windows 和 SQL 模式身份验证,带网络访问。
示例 1(通过网络进行 Java 和 Windows 访问)
在此示例中,我们将使用混合模式身份验证,因为我们希望通过网络从 Windows 应用程序和 Java 应用程序访问数据库。用户名和密码将以明文形式通过网络发送。
[Options]
DISABLENETWORKPROTOCOLS=0
SAPWD="password "
INSTANCENAME="myinstance"
SECURITYMODE=SQL
要安装 MSDE,请运行“setup.exe”安装应用程序。
Windows 身份验证,带网络访问。
示例 2(通过网络进行 Windows 访问)
在此示例中,我们将使用 Windows 身份验证,因为我们不想通过网络以明文形式发送用户名和密码。只有 Windows 应用程序和 .NET 应用程序可以访问数据库。应用程序会自动使用客户端计算机上的登录名和密码登录到 MSDE。
[Options]
DISABLENETWORKPROTOCOLS=0
SAPWD="password "
INSTANCENAME="myinstance"
要安装 MSDE,请运行“setup.exe”安装应用程序。
混合 Windows 和 SQL 模式身份验证,无网络访问。
示例 3(仅本地 Java 和 Windows 访问)
在此示例中,我们不会授予网络访问权限。只有本地应用程序可以访问数据库。我们将为 Java 应用程序使用混合模式身份验证。
[Options]
SAPWD="password "
INSTANCENAME="myinstance"
SECURITYMODE=SQL
要安装 MSDE,请运行“setup.exe”安装应用程序。
Windows 身份验证,无网络访问
示例 4(仅本地 Windows 访问)
在此示例中,我们不会授予数据库网络访问权限。我们也只会授予 Windows 身份验证访问权限。这是最安全的设置,适用于嵌入式 MSDE 应用程序。
[Options]
SAPWD="password "
INSTANCENAME="myinstance"
要安装 MSDE,请运行“setup.exe”安装应用程序。
重新配置后
可以通过注册表重新配置已安装 MSDE 实例的身份验证模式。在控制面板(“管理工具”和“服务”)中停止数据库实例。打开“regedt32.exe”,找到“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\myinstance\MSSQLServer”和“LoginMode”键。对于 Windows 身份验证,将此键设置为“1”;对于 SQL 身份验证,将此键设置为“0”(或“2”?)。在控制面板(“管理工具”和“服务”)中重新启动数据库实例。
您要更改系统管理员(sa 用户)的密码吗?
使用 osql 工具登录到 MSDE
使用 Windows 身份验证
C:\> osql –E –S localhost\myinstance
1> use master
2> go
1> exec sp_password @old = null, @new = ‘newpassword’, @loginame = 'sa'
2> go
Password changed.
1>quit
使用 SQL 身份验证
C:\> osql –U sa –P password –S localhost\myinstance
1> use master
2> go
1> exec sp_password @old = null, @new = ‘newpassword’, @loginame = 'sa'
2> go
Password changed.
1>quit
配置服务器
运行 SQL Server 网络实用程序。打开命令提示符并键入
C:\> svrnetcn.exe
启用“命名管道”协议和“TCP/IP”协议。单击“TCP/IP”协议上的“属性”。如果您需要网络访问,可以在此处配置 MSDE 将要侦听的默认端口。默认值为 1433。
配置客户端
运行 SQL Server 客户端网络实用程序。打开命令提示符并键入
C:\> cliconfg.exe
启用“命名管道”和“TCP/IP”协议。单击“TCP/IP”协议上的“属性”。在这里,您将配置使用“svrnetcn.exe”实用程序找到的端口号。默认值为 1433。
在“别名”框下为“命名管道”和“TCP/IP”添加别名。如果您不想为所有应用程序配置特定配置,则使用别名。客户端只需访问别名,客户端实用程序就会将请求映射到正确的配置。
启动它!
让我们启动 MSDE。打开控制面板、管理工具和“服务”实用程序。在列表中找到实例“MSSQL$MYINSTANCE”。右键单击它,然后选择“启动”。启动类型应为“自动”。
如何确定我正在运行的版本?
好的,MSDE 现在应该已启动并正在运行。让我们测试一下。运行 osql 工具。
C:\> osql –E –S localhost\myinstance
1: select @@VERSION
2: go
3: quit
8.00.194 - MSDE 2000
8.00.384 - MSDE 2000 SP1
8.00.534 - MSDE 2000 SP2
8.00.760 - MSDE 2000 SP3
创建和删除数据库
默认情况下,MSDE 安装了四个数据库。这些数据库是:
- Master - 包含所有系统元数据,例如登录帐户、设置以及数据库文件的位置等。文件:master.mdf、mastlog.ldf。
- Tempdb - 包含工作表和临时存储。此数据库中的所有数据将在断开连接时被删除。文件:tempdb.mdf、templog.ldf。
- Model - 这是系统中所有数据库的模型。它充当新数据库的模板。文件:model.mdl、modellog.ldf。
- Msdb - 用于 SQL Server Agent 调度作业。文件:msdbdata.mdf、msdblog.ldf。
您不应将任何这些数据库用于任何应用程序目的。就应用程序而言,它们是神圣的,无法触及,就是这么简单。创建一个新数据库来存储您的应用程序数据。
让我们创建一个名为“Books”的数据库。首先,您必须以系统管理员 (sa) 或具有 dbcreator 权限的用户身份登录。打开 osql 管理实用程序并以系统管理员身份登录。
C:\> osql –U sa –P password –S localhost\myinstance
或者
C:\> osql –E –S localhost\myinstance
使用 Model 模板创建简单的数据库
1> use master
2:> go
1> CREATE DATABASE Books
2> go
The CREATE DATABASE process is allocating 0.63 MB on disk 'Books'.
The CREATE DATABASE process is allocating 0.49 MB on disk 'Books_log'.
删除 Books 数据库
1> use master
2:> go
1> DROP DATABASE Books
2> go
Deleting database file 'C:\Program Files\Microsoft SQL
Server\MSSQL$MYINSTANCE\Data\Books_log.LDF'.
Deleting database file 'C:\Program Files\Microsoft SQL
Server\MSSQL$MYINSTANCE\Data\Books.mdf'.
创建指定文件名的数据
1> use master
2> go
1> CREATE DATABASE Books
2> ON
3> ( NAME = books_dat,
4> FILENAME = 'D:\Database\books.mdf' )
5> go
The CREATE DATABASE process is allocating 0.63 MB on disk 'books_dat'.
The CREATE DATABASE process is allocating 0.49 MB on disk 'Books_log'.
- NAME = 在 TSQL 语句中用于指定数据库的逻辑名称。
- FILENAME = 数据库在硬盘上的物理位置。
创建指定文件名和大小的数据库
1> use master
2> go
1> CREATE DATABASE Books
2> ON
3> ( NAME = books_dat,
4> FILENAME = 'D:\Database\books.mdf',
5> SIZE = 10,
6> MAXSIZE = 100,
7> FILEGROWTH = 5 )
8> go
The CREATE DATABASE process is allocating 10.00 MB on disk 'books_dat'.
The CREATE DATABASE process is allocating 2.50 MB on disk 'Books_log'.
- NAME = 在 TSQL 语句中用于指定数据库的逻辑名称。
- FILENAME = 数据库在硬盘上的物理位置。
- SIZE = 初始文件大小。
- MAXSIZE = 数据库最大大小。
- FILEGROWTH = 数据库文件的增量。数据库文件将以 MB 为单位增长此大小。
创建指定文件名、大小和日志文件的数据库
1> use master
2> go
1> CREATE DATABASE Books
2> ON
3> ( NAME = Books_dat,
4> FILENAME = 'D:\Database\books.mdf',
5> SIZE = 10,
6> MAXSIZE = 100,
7> FILEGROWTH = 5 )
8> LOG ON
9> ( NAME = 'Books_log',
10> FILENAME = 'D:\Database\bookslog.ldf',
11> SIZE = 5,
12> MAXSIZE = 50,
13> FILEGROWTH = 2 )
14> go
The CREATE DATABASE process is allocating 10.00 MB on disk 'Books_dat'.
The CREATE DATABASE process is allocating 5.00 MB on disk 'Books_log'.
- NAME = 在 TSQL 语句中用于指定日志和数据库的逻辑名称。
- FILENAME = 日志文件和数据库在硬盘上的物理位置。
- SIZE = 初始文件大小。
- MAXSIZE = 日志和数据库的最大大小。
- FILEGROWTH = 日志和数据库文件的增量。数据库文件将以 MB 为单位增长此大小。
如何列出系统上的所有数据库?
如果您想列出实例上的所有数据库,请打开 osql 实用程序并执行以下查询:
C:\ >osql -E -S localhost\myinstance
1> use master
2> go
1> select name from sysdatabases
2> go
name
------------------------------------
master
tempdb
model
msdb
test
Products
(6 rows affected)
在此示例中,我创建了两个数据库:test 和 Products。
如何从系统中分离数据库?
要从系统中分离名为 larsinge 的数据库,请执行以下操作:
1> exec sp_detach_db 'larsinge'
2> go
在此示例中,我们分离了一个名为“larsinge”的数据库。现在可以移动、备份该数据库,或者对文件执行任何您想执行的操作。
如何将数据库附加到系统中?
只需执行此操作即可连接名为 larsinge 的数据库:
1> exec sp_attach_db @dbname = 'larsinge',
2> @filename1 =
'C:\Program Files\Microsoft SQL Server\MSSQL$LITBASE\Data\larsinge.mdf',
3> @filename2 =
'C:\Program Files\Microsoft SQL Server\MSSQL$LITBASE\Data\larsinge_log.LDF'
4> go
如何列出数据库中的所有表?
如果您想列出实例中的所有表,请打开 osql 实用程序并执行以下查询:
C:\ >osql -E -S localhost\myinstance
1> use Products
2> go
1> select name from sysobjects where type = 'U'
在此示例中,我们列出了 myinstance 实例中 Products 数据库的所有表。键入“U”表示“用户表”。如果您想列出所有系统表,请尝试将类型更改为“S”。
C:\ >osql -E -S localhost\myinstance
1> use Products
2> go
1> select name from sysobjects where type = 'S'
数据库用户
添加用户并授予对数据库的访问权限。
添加具有 SQL 身份验证的新用户
这将添加一个名为“lars”的新 SQL 登录用户,密码为“pass45”,并将默认数据库设置为“larsinge”。创建用户后,请记住授予用户对数据库和表的访问权限。
1> use master
2> go
1> EXEC sp_addlogin 'lars', 'pass45', 'larsinge'
2> go
New login created.
授予对数据库的访问权限
1> use larsinge
2> go
1> EXEC sp_grantdbaccess 'lars'
2> go
Granted database access to 'lars'.
1> grant all on table_name to lars
2> go
使用 Windows 身份验证
数据库名称为“larsinge”,Windows 身份验证用户为“TARGUS\testuser”
1> use larsinge
2> go
1> exec sp_grantdbaccess 'TARGUS\testuser'
2> go
Granted database access to 'TARGUS\testuser'.
如何列出数据库中的所有用户和角色?
请打开 osql 实用程序,并执行以下查询以列出 Products 数据库中的所有用户:
1> use Products
2> go
1> select name from sysusers
2> go
如何从数据库中删除用户?
这是如何撤销用户“lars”对数据库“larsinge”的访问权限。
1> use larsinge
2> go
1> exec sp_revokedbaccess 'lars'
2> go
退出 osql
1> quit