当前位置: 澳门新濠3559 > 数据库 > 正文

访问数据库,Windows NT 用户或组 %s 找不到

时间:2019-11-08 05:43来源:数据库
简介 本文介绍如何在不同服务器上的 Microsoft SQL Server 2005实例之间传输登录和密码。 有关如何在其他版本的 SQLServer 实例之间传输登录和密码的更多信息,请单击下面的文章编号,以查

简介

本文介绍如何在不同服务器上的 Microsoft SQL Server 2005 实例之间传输登录和密码。

有关如何在其他版本的 SQL Server 实例之间传输登录和密码的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

246133 如何在 SQL Server 实例之间传输登录和密码

本页

澳门新濠3559 1概要

澳门新濠3559 2何为 Osql?

澳门新濠3559 3如何使用 Osql?

澳门新濠3559 4交互式输入 Transact-SQL 语句

澳门新濠3559 5提交 Osql 作业

澳门新濠3559 6连接到 SQL Server 桌面引擎 (MSDE 2000)

澳门新濠3559 7管理 MSDE 2000

澳门新濠3559 8新建登录帐户

澳门新濠3559 9访问数据库

澳门新濠3559 10如何更改登录密码

澳门新濠3559 11创建数据库

澳门新濠3559 12备份和还原数据库

澳门新濠3559 13附加和分离数据库

澳门新濠3559 14参考

当 Microsoft Windows NT 用户或 Microsoft Windows NT 组为登录名添加到 Microsoft SQL Server,或者当从一个域中服务器的登录名移动到另一个域中的服务器时,您可能会看到以下错误:

更多信息

在本文中,服务器 A 和服务器 B 是不同的服务器。另外,服务器 A 和服务器 B 都在运行 SQL Server 2005。

在将一个数据库从服务器 A 上的 SQL Server 实例移动到服务器 B 上的 SQL Server 实例之后,用户可能无法登录到移至服务器 B 上的数据库。而且,用户可能会收到以下消息:

用户“MyUser”登录失败。(Microsoft SQL Server,错误:18456)

出现此问题的原因是,您未将登录和密码从服务器 A 上的 SQL Server 实例传输到服务器 B 上的 SQL Server 实例。

若要将登录和密码从服务器 A 上的 SQL Server 实例传输到服务器 B 上的 SQL Server 实例,请执行以下步骤:

  1. 在服务器 A 上,启动 SQL Server Management Studio,然后连接到要从中移动数据库的 SQL Server 实例。
  2. 打开新的查询编辑器窗口,然后运行以下脚本。

    USE master
    GO
    IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL
      DROP PROCEDURE sp_hexadecimal
    GO
    CREATE PROCEDURE sp_hexadecimal
        @binvalue varbinary(256),
        @hexvalue varchar (514) OUTPUT
    AS
    DECLARE @charvalue varchar (514)
    DECLARE @i int
    DECLARE @length int
    DECLARE @hexstring char(16)
    SELECT @charvalue = '0x'
    SELECT @i = 1
    SELECT @length = DATALENGTH (@binvalue)
    SELECT @hexstring = '0123456789ABCDEF'
    WHILE (@i <= @length)
    BEGIN
      DECLARE @tempint int
      DECLARE @firstint int
      DECLARE @secondint int
      SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))
      SELECT @firstint = FLOOR(@tempint/16)
      SELECT @secondint = @tempint - (@firstint*16)
      SELECT @charvalue = @charvalue +
        SUBSTRING(@hexstring, @firstint+1, 1) +
        SUBSTRING(@hexstring, @secondint+1, 1)
      SELECT @i = @i + 1
    END
    
    SELECT @hexvalue = @charvalue
    GO
    
    IF OBJECT_ID ('sp_help_revlogin') IS NOT NULL
      DROP PROCEDURE sp_help_revlogin
    GO
    CREATE PROCEDURE sp_help_revlogin @login_name sysname = NULL AS
    DECLARE @name sysname
    DECLARE @type varchar (1)
    DECLARE @hasaccess int
    DECLARE @denylogin int
    DECLARE @is_disabled int
    DECLARE @PWD_varbinary  varbinary (256)
    DECLARE @PWD_string  varchar (514)
    DECLARE @SID_varbinary varbinary (85)
    DECLARE @SID_string varchar (514)
    DECLARE @tmpstr  varchar (1024)
    DECLARE @is_policy_checked varchar (3)
    DECLARE @is_expiration_checked varchar (3)
    
    DECLARE @defaultdb sysname
    
    IF (@login_name IS NULL)
      DECLARE login_curs CURSOR FOR
    
          SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM 
    sys.server_principals p LEFT JOIN sys.syslogins l
          ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name <> 'sa'
    ELSE
      DECLARE login_curs CURSOR FOR
    
          SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM 
    sys.server_principals p LEFT JOIN sys.syslogins l
          ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name = @login_name
    OPEN login_curs

    FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin
    IF (@@fetch_status = -1)
    BEGIN
      PRINT 'No login(s) found.'
      CLOSE login_curs
      DEALLOCATE login_curs
      RETURN -1
    END
    SET @tmpstr = '/* sp_help_revlogin script '
    PRINT @tmpstr
    SET @tmpstr = '** Generated ' + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */'
    PRINT @tmpstr
    PRINT ''
    WHILE (@@fetch_status <> -1)
    BEGIN
      IF (@@fetch_status <> -2)
      BEGIN
        PRINT ''
        SET @tmpstr = '-- Login: ' + @name
        PRINT @tmpstr
        IF (@type IN ( 'G', 'U'))
        BEGIN -- NT authenticated account/group

          SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' FROM WINDOWS WITH DEFAULT_DATABASE = [' + @defaultdb + ']'
        END
        ELSE BEGIN -- SQL Server authentication
            -- obtain password and sid
                SET @PWD_varbinary = CAST( LOGINPROPERTY( @name, 'PasswordHash' ) AS varbinary (256) )
            EXEC sp_hexadecimal @PWD_varbinary, @PWD_string OUT
            EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT

            -- obtain password policy state
            SELECT @is_policy_checked = CASE is_policy_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name
            SELECT @is_expiration_checked = CASE is_expiration_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name

                SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' WITH PASSWORD = ' + @PWD_string + ' HASHED, SID = ' + @SID_string + ', DEFAULT_DATABASE = [' + @defaultdb + ']'

            IF ( @is_policy_checked IS NOT NULL )
            BEGIN
              SET @tmpstr = @tmpstr + ', CHECK_POLICY = ' + @is_policy_checked
            END
            IF ( @is_expiration_checked IS NOT NULL )
            BEGIN
              SET @tmpstr = @tmpstr + ', CHECK_EXPIRATION = ' + @is_expiration_checked
            END
        END
        IF (@denylogin = 1)
        BEGIN -- login is denied access
          SET @tmpstr = @tmpstr + '; DENY CONNECT SQL TO ' + QUOTENAME( @name )
        END
        ELSE IF (@hasaccess = 0)
        BEGIN -- login exists but does not have access
          SET @tmpstr = @tmpstr + '; REVOKE CONNECT SQL TO ' + QUOTENAME( @name )
        END
        IF (@is_disabled = 1)
        BEGIN -- login is disabled
          SET @tmpstr = @tmpstr + '; ALTER LOGIN ' + QUOTENAME( @name ) + ' DISABLE'
        END
        PRINT @tmpstr
      END

      FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin
       END
    CLOSE login_curs
    DEALLOCATE login_curs
    RETURN 0
    GO

注意:此脚本会在“master”数据库中创建两个存储过程。两个存储过程分别命名为“sp_hexadecimal”存储过程和“sp_help_revlogin”存储过程。
  1. 运行下面的语句。

    EXEC sp_help_revlogin
    

    由“sp_help_revlogin”存储过程生成的输出脚本是登录脚本。此登录脚本创建具有原始安全标识符 (SID) 和原始密码的登录。

  2. 在服务器 B 上,启动 SQL Server Management Studio,然后连接到您将数据库移动到的 SQL Server 实例。

    重要信息:在执行步骤 5 之前,请检查“备注”一节中的信息。

  3. 打开新的查询编辑器窗口,然后运行步骤 3 中生成的输出脚本。

概要

“SQL Server 桌面引擎”(也叫 MSDE 2000)没有自己的用户界面,因为它主要设计为在后台运行。用户通过 MSDE 2000 嵌入的程序与它交互。随 MSDE 2000 提供的唯一工具是 osql 。可执行文件 Sql.exe 在 MSDE 2000 的默认实例的 MSSQLBinn 文件夹中。本文重点讨论如何通过使用 osql 工具管理 MSDE 2000。

澳门新濠3559 15回到顶端

错误 15401: Windows NT 用户或组 %s 找不到。再次检查该名称。

备注

在对服务器 B 的实例上运行输出脚本之前,请检查以下信息:

  • 仔细检查输出脚本。如果服务器 A 和服务器 B 处在不同的域中,则必须修改输出脚本。然后,必须在 CREATE LOGIN 语句中使用新的域名来替换原始域名。新的域中授予访问权限的集成登录不会具有与原始域中的登录相同的 SID。因此,用户会从这些登录中孤立出来。 有关如何解决这些孤立用户的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
[240872 ](https://support.microsoft.com/zh-cn/help/240872)如何解决在运行
SQL Server 的服务器之间移动数据库时的权限问题  

如果服务器 A 和服务器 B 处于同一域中,则使用相同的
SID。因此,用户不可能是孤立的。
  • 在输出脚本中,通过使用加密密码来创建登录。这是因为 CREATE LOGIN 语句中使用了 HASHED 参数。此参数指定在 PASSWORD 参数后输入的密码已经过哈希处理。
  • 默认情况下,只有“sysadmin”固定服务器角色的成员可以从“sys.server_principals”视图运行 SELECT 语句。除非“sysadmin”固定服务器角色的成员授予用户必需的权限,否则用户无法创建或运行输出脚本。
  • 本文中的步骤不会为特定登录传输默认数据库信息。这是因为默认数据库不可能总是存在于服务器 B 上。若要定义某个登录的默认数据库,请使用 ALTER LOGIN 语句,并传入登录名和默认数据库作为参数。
  • 服务器 A 的排序顺序可能不区分大小写,而服务器 B 的排序顺序可能区分大小写。在此情况下,当您将登录和密码传输到服务器 B 上的实例之后,必须以大写字母的形式来键入密码中的所有字母。

    或者,服务器 A 的排序顺序可能区分大小写,而服务器 B 的排序顺序可能不区分大小写。在此情况下,您将无法使用传输到服务器 B 上的实例的登录和密码进行登录,除非满足下面的条件之一:

    • 原始密码不包含字母。
    • 原始密码中的所有字母都是大写字母。

    服务器 A 和服务器 B 的排序顺序可能都区分大小写,或者可能都不区分大小写。在这些情况下,用户不会遇到问题。

  • 已经位于服务器 B 上的实例中的登录可能具有与输出脚本中的某个名称相同的名称。在此情况下,当对服务器 B 上的实例运行输出脚本时,会接收到下面的错误消息: 消息 15025,级别 16,状态 1,行 1
    服务器主体 'MyLogin' 已存在。

    类似地,已经位于服务器 B 上的实例中的登录可能具有与输出脚本中的某个 SID 相同的 SID。在此情况下,当对服务器 B 上的实例运行输出脚本时,会接收到下面的错误消息: 消息 15433,级别 16,状态 1,行 1
    所提供的参数 sid 正在使用。

    因此,必须执行以下操作:

    1. 仔细检查输出脚本。
    2. 检查服务器 B 上的实例中的“sys.server_principals”视图的内容。
    3. 相应地解决这些错误消息。
  • 在 SQL Server 2005 中,登录的 SID 用作实现数据库级别访问的基础。一个登录可能在服务器的两个不同数据库中具有两个不同的 SID。在此情况下,该登录只可以访问具有与“sys.server_principals”视图中的 SID 匹配的 SID 的数据库。在从两个不同的服务器合并这两个数据库时,可能会出现此问题。若要解决此问题,可使用 DROP USERT 语句,从具有不匹配的 SID 的数据库中手动删除相应的登录。然后,通过使用 CREATE USER 语句再次添加该登录。

何为 Osql?

osql 工具是一个 Microsoft Windows 32 命令提示符工具,您可以使用它运行 Transact-SQL 语句和脚本文件。osql 工具使用 ODBC 数据库应用程序编程接口 (API) 与服务器通讯。

澳门新濠3559 16回到顶端

本分步指南介绍讨论错误以及如何解决此问题的潜在的原因。

参考

有关如何解决孤立用户问题的更多信息,请访问以下 Microsoft Developer Network (MSDN) 网站:

有关 CREATE LOGIN 语句的更多信息,请访问下面的 MSDN 网站:

有关 ALTER LOGIN 语句的更多信息,请访问下面的 MSDN 网站:

如何使用 Osql?

一般情况下,可以这样使用 osql 工具:

用户通过与使用命令提示符时相似的方式交互输入 Transact-SQL 语句。
用户提交 osql 作业,方法是:
指定单个要运行的 Transact-SQL 语句。 - 或 -

将该工具指向一个包含要运行的 Transact-SQL 语句的脚本文件。

澳门新濠3559 17回到顶端

交互式输入 Transact-SQL 语句

如要显示 osql 工具的区分大小写的选项列表,请在命令提示符下键入如下内容,然后按 ENTER 键:

osql -?

如想了解关于 osql 工具的每一选项的更多信息,请参见“SQL Server 联机图书”中的“osql Utility”主题。

如要交互输入 Transact-SQL 语句,请按照下列步骤操作:

1. 确认 MSDE 2000 正在运行。
2. 连接到 MSDE 2000(有关更多信息,请参见标题为“连接到 SQL Server 桌面引擎 (MSDE 2000)”的部分)。
3. osql 命令提示符下,键入 Transact-SQL 语句,然后按 ENTER 键。 当您在输入的每一行后按 ENTER 键时,osql 将缓存该命令行上的语句。

如要运行当前缓存的语句,请键入“Go”,接着按 ENTER 键。

如要运行一批 Transact-SQL 语句,请分别在单独的行上输入每一个 Transact-SQL 命令。然后,在最后一行上键入“Go”以表示批处理命令的结束并运行当前缓存的语句。

运行结果出现在控制台窗口。

4. 当您在输入的每一行后按 ENTER 键时,如想从 osql 退出,请键入 QUIT 或 EXIT,并按 ENTER 键。
该登录名不存在
  1. 验证在域中仍然存在 Windows 登录名。您的网络管理员可能已删除 Windows 登录,为特定的原因,您可能无法向该 SQL Server 授予该登录访问权。
  2. 验证您正确拼写域和登录名和您正在使用以下格式:

    DomainUser

  3. 如果存在该登录名,并正确,并且您仍然收到错误,继续以下各节中,在这篇文章中。

澳门新濠3559 18回到顶端

提交 Osql 作业

一般情况下,您可以用两种方法之一提交 osql 作业。您可以:

指定单个 Transact-SQL 语句。

- 或 -

将该工具指向一个脚本文件。

下面将详细介绍每一种方法。

指定单个 Transact-SQL 语句

如要针对 MSDE 2000 的本地默认实例运行 Transact-SQL,请键入与下面这一个类似的命令:

访问数据库,Windows NT 用户或组 %s 找不到。osql -E -q "Transact-SQL statement"

其中

-E 表示使用 Microsoft Windows NT 身份验证。

-而-

-q 表示运行 Transact-SQL 语句,但是在查询结束时不退出 osql

如要运行 Transact-SQL 语句并退出 osql,请使用 -Q 参数来代替 -q

将该工具指向一个脚本文件

如要将该工具指向一个脚本文件,请按照下列步骤操作:

1. 创建一个包含一批 Transact-SQL 语句的脚本文件(如 myQueries.sql)。
2. 打开命令提示符,键入与下面类似的一个命令,然后按 ENTER 键:

osql -E -i input_file

其中

input_file 是脚本文件及其完整路径。例如,如果脚本文件 myQueries.sql 在 C:Queries 文件夹中,请将参数 input_file 替换为 C:QueriesmyQueries.sql。

该脚本文件的运行结果将出现在控制台窗口中。如果您想将运行结果定向到一个文件,请向上述命令中添加 -ooutput_file 参数。例如:

osql -E -i input_file -o output_file

其中

output_file 是输出文件及其完整路径。

如想消除输出结果中的编号和提示符号,请向上述命令中添加 -n 选项。例如:

osql -E -i input_file -o output_file -n

澳门新濠3559 19回到顶端

重复的安全标识符

在 Windows 域中唯一的安全标识符 (sid) 会自动分配到域中的 Windows 登录名。为 SQL Server 登录名中添加 Windows 登录时系统表中 SQL Server 存储 SID。如果试图添加一个新的登录具有相同的 SID 为一个现有的 SQL Server 登录 15401 错误发生。
注意SQL Server 2005 中不允许重复的 sid。

  1. 若要确定这是您的错误的原因,母版对运行下面的代码数据库而您登录到 SQL Serversysadmin 角色的成员身份:

    ``

    SELECT name FROM syslogins WHERE sid = SUSER_SID ('YourDomainYourLogin')
    
  2. 如果从该查询返回一行,重复 SID 是问题的您的原因。

  3. 此方案的一个可能的原因从另一个域中服务器加载 master 数据库。可能存在的那个域中登录一个 SID 与您试图在此域中添加该登录一样。这还可能在其中有克隆或映像系统的环境中发生。
  4. 您必须使用 sp_revokelogin 除去该登录名与匹配的 SID 或者,保留在现有登录名正确映射从旧的域登录名,要在新域中的登录名。有关如何执行此操作的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

    314546 如何在运行 SQL Server 的计算机之间移动数据库

澳门新濠3559 20回到顶端

连接到 SQL Server 桌面引擎 (MSDE 2000)

如要连接到 MSDE 2000,请按照下列步骤操作:

1. 确认 MSDE 2000 正在运行。
2. 在承载您要连接的 MSDE 2000 实例的计算机上打开一个命令窗口。
3. 键入下面的命令,然后按 ENTER 键:

osql -E

这可以通过使用 Windows 身份验证将您连接到 MSDE 2000 的本地默认实例。

如要连接到 MSDE 2000 的一个命名实例,请键入:

osql -E -S servernameinstancename

如果您收到了下面的错误消息,表明 MSDE 2000 可能未在运行,或者您可能为安装的 MSDE 2000 的命名实例提供了错误的名称:
[Shared Memory]SQL Server does not exist or access denied.
[Shared Memory]ConnectionOpen (Connect()).
如果您成功连接到了该服务器,就会出现下面的提示:

   1>
            
此提示表示 osql 已启动。现在,您可以交互输入 Transact-SQL 语句,运行结果将出现在命令提示行上。

澳门新濠3559 21回到顶端

身份验证失败

当由于某种原因 (相同或不同的域) 登录的所在的域的域控制器不可用时,您可能会收到错误 15401。

  1. 如果登录名是在比该 SQL Server 不同的域中,验证在域之间存在正确的信任关系。
  2. 验证登录的域控制器是可访问,通过从计算机正在运行 SQL Server ping 命令。请检查 IP 地址和域控制器的名称。
    有关 ping 命令的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

    102908 如何解决与 Windows 2000 或 Windows NT 的 TCP/IP 连接问题

澳门新濠3559 22回到顶端

管理 MSDE 2000

本文下面的部分将向您简单介绍管理 MSDE 2000 时最常用的 Transact-SQL 命令。

区分大小写

您可能遇到以下 Microsoft 知识库文章所述的区分大小写问题:

245768 区分大小写 Unicode 排序顺序和 Windows NT 登录

在此例使用 sp_configuresp_helpsort 存储以确定如果排序顺序或 SQL Server 实例的排序规则是大小写敏感的过程。区分大小写服务器是否按照中被引用的文章 (Q245768) 已成功添加登录步骤进行操作。

澳门新濠3559 23回到顶端

新建登录帐户

未提供有效登录 id 的用户无法连接到 SQL Server。可调用 sp_grantlogin 存储过程来授权一个 Microsoft Windows 网络帐户(一个组或者一个用户帐户),使之作为一个使用 Windows 身份验证连接到 SQL Server 实例的 SQL Server 登录帐户。下面的示例允许一个名为 CorporateTest 的 Windows NT 用户连接到 SQL Server 实例:

EXEC sp_grantlogin 'CorporateTest'

只有 sysadminsecurityadmin 固定服务器角色的成员可以运行 sp_grantlogin 存储过程。有关这些角色的更多信息,请参见“SQL Server 联机图书”中“Roles, SQL Server Architecture”主题。

有关 sp_grantlogin 存储过程的更多信息,请参见“SQL Server 联机图书”中的“sp_grantlogin, Transact-SQL Reference”主题。

您可以使用 sp_addlogin 存储过程创建一个使用 SQL Server 身份验证建立 SQL Server 连接的新登录帐户。下面的示例为一个名叫“test”的用户创建了一个密码为“hello”的 SQL Server 登录:

EXEC sp_addlogin 'test','hello'

只有 sysadminsecurityadmin 固定服务器角色的成员可以运行 sp_addlogin 存储过程。有关 sp_addlogin 存储过程的更多信息,请参见“SQL Server 联机图书”中的“sp_addlogin, Transact-SQL Reference”主题。

本地帐户

本地 (非域) 帐户需要进行特殊处理。如果您正试图添加本地帐户从本地计算机运行 SQL Server,查看下面的 Microsoft 知识库文章,获取正确的步骤:

322988 在 Microsoft Windows NT 4.0 的 sp_grantlogin"NT AUTHORITYSYSTEM"失败

  1. 为在 Windows NT 4.0 SQL Server 登录名中添加本地系统帐户查看 Q322988 Microsoft 知识库文章中的过程。
  2. 当您将添加预定义的本地组时,则必须使用内建作为域。
    有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

    216808 使用 BUILTINGroup 到预定义的 Windows NT 组授予访问权限

澳门新濠3559 24回到顶端

访问数据库

在用户连接到 SQL Server 的一个实例后,他们只有在 dbo 授予他们对数据库的访问权后才可以在数据库中执行活动。您可以使用 sp_grantdbaccess 存储过程为新用户向当前数据库中添加一个安全帐户。下面的示例为一个名叫 CorporateBobJ 的 Microsoft Windows NT 的用户向当前数据库添加了一个帐户,并将其命名为“Bob”:

EXEC sp_grantdbaccess 'CorporateBobJ', 'Bob'

sp_adduser 存储过程执行与 sp_grantdbaccess 存储过程相同的功能。因为包括 sp_adduser 存储过程是为了向后兼容,所以 Microsoft 建议您使用 sp_grantdbacess 存储过程。

只有 sysadmin 固定服务器角色、db_accessadmindb_owner 固定数据库角色的成员才可以运行 sp_grantdbaccess 存储过程。有关 sp_grantdbaccess 存储过程的更多信息,请参见“SQL Server 联机图书”中的“sp_grantdbaccess, Transact-SQL Reference”主题。

名称解析

如果添加登录或组所涉及的计算机的名称解析问题,您可能会收到错误 15401。
验证您的名称解析机制 (如 WINS、 DNS、 HOSTS 或 LMHOSTS) 配置是否正确。

如何更改登录密码

如要修改登录密码,请使用 sp_password 存储过程。下面的示例将“test”登录的密码从“ok”更改为“hello”:

EXEC sp_password 'ok', 'hello','test'

执行权限默认授予正在更改其自己的登录密码的用户的公共角色。只有 sysadmin 角色才可以为其他用户更改登录密码。有关 sp_password 存储过程的更多信息,请参见“SQL Server 联机图书中”的“sp_password, Transact-SQL Reference”主题。

创建数据库

MSDE 2000 数据库由一个表的集合组成,这些表中包含数据和其他对象,如视图、索引、存储过程和事件触发器,这些内容定义为支持对数据执行的各种活动。如要创建 MSDE 2000 数据库,请使用“CREATE DATABASE”Transact-SQL 命令。有关 创建数据库的更多信息,请参见“SQL Server 联机图书”中的“Creating a Database”主题。

下面的示例创建了一个名为 Test 的数据库。因为没有向该命令行添加其他参数,所以 Test 数据库将与 model 数据库大小相同:

CREATE DATABASE Test

CREATE DATABASE 权限默认授予 sysadmindbcreator 固定服务器角色的成员。有关“CREATE DATABASE”命令的更多信息,请参见“SQL Server 联机图书”中的“CREATE DATABASE, Transact-SQL Reference”主题。

如要创建一个新的数据库对象,请使用“CREATE Transact-SQL”命令。例如,要新建一个表,请使用“CREATE TABLE”Transact-SQL 命令。有关更多信息,请参考“SQL Server 联机图书”。

备份和还原数据库

SQL Server 的备份和还原组件为保护存储在 SQL Server 数据库中的关键数据提供了一个重要的保护措施。

通过适当的规划,您可以从许多故障中恢复,包括:

存储媒体故障。
用户错误。
服务器的永久丢失。

另外,备份和还原数据库还有其他方面的用途,例如将数据库从一个服务器复制到另一个服务器。通过从一台计算机上备份一个数据库和将此数据库还原到另一台计算机上,您可以快速方便地制作数据库的副本。

有关数据库备份和还原操作方面的更多信息,请参见“SQL Server 联机图书”中的“Backing Up and Restoring Databases”主题。

下面的示例为一个名为 mydb的数据库执行完全数据库备份,将此备份命名为 Mydb.bak,然后将此备份存储在 C:MsdeBackup 文件夹中。

BACKUP DATABASE mydb TO DISK = 'C:MSDEBackupmydb.bak'

下面的示例为一个名为 mydb 的数据库执行日志备份,将此备份命名为 Mydb_log.bak,然后将其存储在 C:MsdeBackup 文件夹中:

BACKUP LOG mydb TO DISK = 'C:MSDEBackupmydb_log.bak'

BACKUP DATABASE 和 BACKUP LOG 权限默认授予 sysadmin 固定服务器角色以及 db_澳门新濠3559,ownerdb_backupoperator 固定数据库角色的成员。有关 BACKUP 语句的更多信息,请参见“SQL Server 联机图书”中的“BACKUP, Transact-SQL Reference”主题。

MSDE 包括 SQL Server 代理程序服务用以管理安排的作业。例如,您可以创建并安排一个 Transact-SQL 备份作业。SQL Server 代理程序服务管理作业安排。如想查看演示如何在 MSDE 2000 中使用各种存储过程执行和安排备份的示例代码,请参见下面的 Microsoft 知识库文章:

241397 () HOWTO:Back Up a Microsoft Data Engine Database with Transact-SQL

有关 SQL Server 代理程序服务的更多信息,请参见“SQL Server 联机图书”中的“SQL Server Agent Service”主题。

备份数据库只是全部过程的一半。知道如何从备份中还原数据库也非常重要。下面的示例将一个名为 mydb 的数据库从备份文件 C:MsdeBackupMydb.bak 中还原:

RESTORE DATABASE mydb FROM DISK ='C:MSDEBackupmydb.bak'

如果将要还原的数据库不存在,则用户必须具有 CREATE DATABASE 权限才可以运行 RESTORE 语句。如果该数据库存在,则 RESTORE 权限默认授予 sysadmindbcreator 固定服务器角色的成员,以及该数据库的所有者 (dbo)。有关 RESTORE 语句的更多信息,请参见“SQL Server 联机图书”中的“RESTORE, Transact-SQL Reference”主题。

附加和分离数据库

可以分离一个数据库的数据和事务日志文件然后将其重新附加到另一个服务器,或重新附加到同一服务器。分离一个数据库虽然从 SQL Server 中删除了该数据库,但构成该数据库的数据和事务日志文件没有任何改动。 然后您可以使用这些数据和事务日志文件将该数据库附加到任何 SQL Server 实例,其中包括从中分离该数据库的那一服务器。这使该数据库能够以与在被分离时完全相同的状态供在其他位置使用。有关更多信息,请参见 “SQL Server 联机图书”中的“Attaching and Detaching a Database”主题。

下面的示例将一个名为 mydb 的数据库从 SQL Server 的当前实例中分离出来:

EXEC sp_detach_db 'mydb'

只有 sysadmin 固定服务器角色的成员才可以运行 sp_detach_db 存储过程。有关 sp_detach_db 存储过程的更多信息,请参见“SQL Server 联机图书”中的“sp_detach_db, Transact-SQL Reference”主题。

下面的示例将来自名为 mydb 的数据库的两个文件附加到 SQL Server 的当前实例:

EXEC sp_attach_db @dbname = N'mydb',
@filename1 = N'C:MSDEBackupmydb.mdf',
@filename2 = N'C:MSDEBackupmydb.ldf'

大写字母“N”用来给“Unicode 字符串”常量添加前缀。“N”前缀代表 SQL-92 标准中的区域语言。有关详细信息,请参见 Microsoft 知识库中的以下文章:

239530 () INF:Unicode String Constants in SQL Server Require N Prefix

只有 sysadmindbcreator 固定服务器角色的成员才可以运行此过程。有关 sp_attach_db 存储过程的更多信息,请参见“SQL Server 联机图书”中的“sp_attach_db, Transact-SQL Reference”主题。 下面关于 osql 工具使用方面的信息适用于所有版本的 Microsoft SQL Server 2000。

澳门新濠3559 25回到顶端

参考

如要下载“SQL Server 2000 联机图书”的更新版本,请访问下面的 Microsoft Web 站点:

()

如要下载“SQL Server 联机图书”的 SQL Server 7.0 版,请访问下面的 Microsoft Web 站点:

http://download.microsoft.com/download/SQL70/File/2/Win98/En-US/SQLBOL.exe ()

有关 MSDE 2000 的更多信息,请参见下列 Microsoft 知识库文章:

319930 () HOW TO:Connect to Microsoft Desktop Engine

241397 () HOWTO:Back Up a Microsoft Desktop Engine Database with Transact-SQL

澳门新濠3559 26回到顶端


这篇文章中的信息适用于:
Microsoft SQL Server 2000 Desktop Engine (Windows)

澳门新濠3559 27回到顶端

关键字: 
kbdownload kbhowto kbhowtomaster KB325003

澳门新濠3559 28回到顶端

Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、

编辑:数据库 本文来源:访问数据库,Windows NT 用户或组 %s 找不到

关键词: