65.9K
CodeProject 正在变化。 阅读更多。
Home

Microsoft MSDE 的配置实践

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.87/5 (132投票s)

2004年11月14日

11分钟阅读

viewsIcon

628225

downloadIcon

1

一篇关于如何安装和配置 MSFT MSDE 2000 的文章。

引言

本文档介绍如何配置 Microsoft MSDE 数据库引擎。以下是文章的主题概述。

什么是 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.mdfmastlog.ldf
  • Tempdb - 包含工作表和临时存储。此数据库中的所有数据将在断开连接时被删除。文件:tempdb.mdftemplog.ldf
  • Model - 这是系统中所有数据库的模型。它充当新数据库的模板。文件:model.mdlmodellog.ldf
  • Msdb - 用于 SQL Server Agent 调度作业。文件:msdbdata.mdfmsdblog.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)

在此示例中,我创建了两个数据库:testProducts

如何从系统中分离数据库?

要从系统中分离名为 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
© . All rights reserved.