我用delphi开发了一个数据库程序,
采用的是和SQL Server连接,要在客户端以sa身份登陆,
在SQL Server上创建新用户,采用什么语句?
新用户的权限如何设定?
如何做,请高手指点,我会另开贴加分的。

解决方案 »

  1.   

    做一个注册窗口,用adoconnetion连接数据库,用adoquery查询或者插入,删除都可以。用sql语句insert into value=
      

  2.   

    firetoucher(风焱) :
     说的详细一点好吗?
      

  3.   

    对SQL Server 2000不是太熟,但我想绝对变得到,
      

  4.   

    EXEC sp_addlogin 'usernmae', 'pwd', 'master'
    增加一个用户
    exec sp_addsrvrolemember 'username', 'sysadmin'
    分配权限
    use **
    EXEC sp_addrolemember 'db_owner', 'softuser'
    增加数据库角色
      

  5.   

    sp_adduser
    为当前数据库中的新用户添加安全帐户。包括此过程是为了向后兼容。请使用 sp_grantdbaccess。语法
    sp_adduser [ @loginame = ] 'login'
        [ , [ @name_in_db = ] 'user' ]
        [ , [ @grpname = ] 'group' ]参数
    [@loginame =] 'login'用户的登录名称。login 的数据类型是 sysname,没有默认值。login 必须是现有 Microsoft® SQL Server™ 登录或 Microsoft Windows NT® 用户。[@name_in_db =] 'user'新用户的名称。user 的数据类型为 sysname,其默认值为 NULL。如果没有指定 user,则用户的名称默认为 login 名称。指定 user 即为新用户在数据库中给予一个不同于 SQL Server 上的登录 ID 的名称。[@grpname =] 'group'组或角色,新用户自动地成为其成员。group 的数据类型为 sysname,默认值为 NULL。group 必须是当前数据库中有效的组或角色。Microsoft SQL Server 7.0 使用角色而不是组。返回代码值
    0(成功)或 1(失败)注释
    SQL Server 用户名可以包含 1 到 128 个字符,包括字母、符号和数字。但是,用户名不能: 含有反斜线符号 (\)。
    为 NULL,或为空字符串 ('')。 
    在添加完用户之后,可以使用 GRANT、DENY 和 REVOKE 语句来定义权限,这些权限控制着用户进行的活动。使用 sp_helplogin 可显示有效登录名的列表。使用 sp_helprole 可显示有效角色名的列表。当指定一个角色时,用户会自动地获得为该角色定义的那些权限。如果没有指定角色,则用户获得的权限将是授予默认 public 角色的权限。若要将用户添加到角色,必须提供 username 的值(username 可与 login_id 相同)。为了访问数据库,必须使用 sp_adduser 或 sp_grantdbaccess 对登录授予访问权,或者数据库中必须存在 guest 安全帐户。不能在用户定义的事务内执行 sp_adduser。权限
    只有 sysadmin 固定服务器角色的 dbo 和成员才能执行 sp_adduser。示例
    A. 添加用户
    下面的示例使用现有的登录 Victoria,将用户 Victoria 添加到当前数据库中现有的 fort_mudge 角色中。EXEC sp_adduser 'Victoria', 'Victoria', 'fort_mudge'B. 添加用户名(使用相同的登录 ID)
    下面的示例为登录 Margaret 将默认用户名 Margaret 添加到当前数据库,该用户名属于默认的 public 角色。EXEC sp_adduser 'Margaret'C. 添加用户(使用不同的用户名)
    下面的示例将 Haroldq 登录添加到当前的数据库中并使用 Harold 用户名,该用户名属于 fort_mudge 角色。EXEC sp_adduser 'Haroldq', 'Harold', 'fort_mudge'
      

  6.   

    sp_addlogin
    创建新的 Microsoft® SQL Server™ 登录,使用户得以连接使用 SQL Server 身份验证的 SQL Server 实例。语法
    sp_addlogin [ @loginame = ] 'login'
        [ , [ @passwd = ] 'password' ]
        [ , [ @defdb = ] 'database' ]
        [ , [ @deflanguage = ] 'language' ]
        [ , [ @sid = ] sid ]
        [ , [ @encryptopt = ] 'encryption_option' ]参数
    [@loginame =] 'login'登录的名称。login 的数据类型为 sysname,没有默认设置。[@passwd =] 'password'登录密码。password 的数据类型为 sysname,默认设置为 NULL。sp_addlogin 执行后,password 被加密并存储在系统表中。[@defdb =] 'database'登录的默认数据库(登录后登录所连接到的数据库)。database 的数据类型为 sysname,默认设置为 master。[@deflanguage =] 'language'用户登录到 SQL Server 时系统指派的默认语言。language 的数据类型为 sysname,默认设置为 NULL。如果没有指定 language,那么 language 被设置为服务器当前的默认语言(由 sp_configure 配置变量 default language 定义)。更改服务器的默认语言不会更改现有登录的默认语言。language 保持与添加登录时所使用的默认语言相同。[@sid =] sid安全标识号 (SID)。sid 的数据类型为 varbinary(16),默认设置为 NULL。如果 sid 为 NULL,则系统为新登录生成 SID。尽管使用 varbinary 数据类型,非 NULL 的值也必须正好为 16 个字节长度,且不能事先存在。SID 很有用,例如,如果要编写 SQL Server 登录脚本,或要将 SQL Server 登录从一台服务器移动到另一台,并且希望登录在服务器间具有相同的 SID 时。[@encryptopt =] 'encryption_option'指定当密码存储在系统表中时,密码是否要加密。encryption_option 的数据类型为 varchar(20),可以是下列值之一。值 描述 
    NULL 加密密码。这是默认设置。 
    skip_encryption 密码已加密。SQL Server 应该存储值而且不用重新对其加密。 
    skip_encryption_old 已提供的密码由 SQL Server 较早版本加密。SQL Server 应该存储值而且不用重新对其加密。此选项只供升级使用。 
    返回代码值
    0(成功)或 1(失败)注释
    SQL Server 登录和密码可包含 1 到 128 个字符,包括任何字母、符号和数字。但是,登录不能: 含有反斜线 (\)。
    是保留的登录名称,例如 sa 或 public,或者已经存在。
    为 NULL,或为空字符串 ('')。 
    如果提供默认数据库的名称,则不用执行 USE 语句就可以连接到指定的数据库。但是,不能使用默认的数据库,直到数据库所有者(使用 sp_adduser 或 sp_addrolemember)或 sp_addrole 授予对该数据库的访问权限为止。SID 号是唯一的 Microsoft Windows NT® 用户标识号。必须保证每个用户的 SID 号在 Windows NT 域中的唯一性。SQL Server 自动使用 Windows NT SID 标识 Windows NT 用户和组,并为 SQL Server 登录生成一个 SID。将登录添加到 SQL Server 时,如果密码已经是加密的形式,则使用 skip_encryption 取消密码加密是有用的。如果此密码由以前的 SQL Server 版本加密,则使用 skip_encryption_old。不能从用户定义的事务中执行 sp_addlogin。下表显示了几个与 sp_addlogin 一起使用的存储过程。存储过程 描述 
    sp_grantlogin 添加 Windows NT 用户或组。 
    sp_password 更改用户密码。 
    sp_defaultdb 更改用户的默认数据库。 
    sp_defaultlanguage 更改用户的默认语言。 
    权限
    只有 sysadmin 和 securityadmin 固定服务器角色的成员才可以执行 sp_addlogin。示例
    A. 创建没有密码和主默认数据库的登录 ID
    下面的示例为用户 Victoria 创建一个 SQL Server 登录名,没有指定密码或默认数据库。EXEC sp_addlogin 'Victoria'B. 创建登录 ID 和默认数据库
    此示例为用户 Albert 创建一个 SQL Server 登录,并指定密码 food 以及名为 corporate 的默认数据库。EXEC sp_addlogin 'Albert', 'food', 'corporate'C.创建使用其它默认语言的登录 ID
    下面的示例为用户 Claire Picard 创建一个 SQL Server 登录名,密码为"caniche",默认数据库为 public_db,默认语言为 French。EXEC sp_addlogin 'Claire Picard', 'caniche', 'public_db', 'french'D. 创建带有特定 SID 的登录 ID
    下面的示例为用户 Michael 创建一个 SQL Server 登录名,密码为"chocolate",默认数据库为 pubs,默认语言为 us_english,SID 为 0x0123456789ABCDEF0123456789ABCDEF。EXEC sp_addlogin 'Michael', 'chocolate', 'pubs', 'us_english', 0x0123456789ABCDEF0123456789ABCDEFE. 创建登录 ID 并且不加密密码
    下例在 Server1 上为用户 Margaret 创建了一个密码为"Rose"的 SQL Server 登录,再析取此加密密码,然后使用前面加密的密码将用户登录 Margaret 添加到 Server2,但不对此密码进一步加密。之后,用户 Margaret 即可使用密码"Rose"登录到 Server2。-- Server1
    EXEC sp_addlogin Margaret, Rose--Results
    New login created.-- Extract encrypted password for Margaret
    SELECT CONVERT(VARBINARY(32), password)
       FROM syslogins 
       WHERE name = 'Margaret'--Results
    ------------------------------------------------------------------ 
    0x2131214A212B57304F5A552A3D513453(1 row(s) affected)-- Server2
    EXEC sp_addlogin 'Margaret', 0x2131214A212B57304F5A552A3D513453, 
       @encryptopt = 'skip_encryption'
      

  7.   

    !!!!!!!!!!!!!!!!!!!!!!!!
    直接copy自sql server 的帮助,还有sp_addsrvrolemember,但我不能up了,自己看看帮助吧
    !!!!!!!!!!!!!!!!!!!!!!!!
    sp_addrolemember
    将安全帐户作为当前数据库中现有 Microsoft® SQL Server™ 数据库角色的成员进行添加。语法
    sp_addrolemember [ @rolename = ] 'role' ,
        [ @membername = ] 'security_account'参数
    [@rolename =] 'role'当前数据库中 SQL Server 角色的名称。role 的数据类型为 sysname,没有默认值。[@membername =] 'security_account'添加到角色的安全帐户。security_account 的数据类型为 sysname,没有默认值。security_account 可以是所有有效的 SQL Server 用户、SQL Server 角色或是所有已授权访问当前数据库的 Microsoft Windows NT® 用户或组。当添加 Windows NT 用户或组时,请指定在数据库中用来识别该 Windows NT 用户或组的名称(使用 sp_grantdbaccess 添加)。返回代码值
    0(成功)或 1(失败)注释
    当使用 sp_addrolemember 将安全帐户添加到角色时,新成员将继承所有应用到角色的权限。在添加 SQL Server 角色,使其成为另一个 SQL Server 角色的成员时,不能创建循环角色。例如,如果 YourRole 已经是 MyRole 的成员,就不能将 MyRole 添加成为 YourRole 的成员。此外,也不能将固定数据库或固定服务器角色,或者 dbo 添加到其他角色。例如,不能将 db_owner 固定数据库角色添加成为用户定义的角色 YourRole 的成员。只能使用 sp_addrolemember 将成员添加到 SQL Server 角色。使用 sp_addsrvrolemember 将成员添加到固定服务器角色。在 SQL Server 中,将成员添加到 Windows NT® 组是不可能的。在用户定义的事务中不能使用 sp_addrolemember。权限
    只有 sysadmin 固定服务器角色和 db_owner 固定数据库角色中的成员可以执行 sp_addrolemember,以将成员添加到固定数据库角色。角色所有者可以执行 sp_addrolemember,将成员添加到自己所拥有的任何 SQL Server 角色。db_securityadmin 固定数据库角色的成员可以将用户添加到任何用户定义的角色。示例
    A. 添加 Windows NT 用户
    下面的示例将 Windows NT 用户 Corporate\JeffL 添加到 Sales 数据库,使其成为用户 Jeff。然后,再将 Jeff 添加到 Sales 数据库的 Sales_Managers 角色中。说明  由于 Corporate\JeffL 在 Sales 数据库中被当作是用户 Jeff,所以必须使用 sp_addrolemember 来指定用户名 Jeff。
    USE Sales
    GO
    EXEC sp_grantdbaccess 'Corporate\JeffL', 'Jeff'
    GO
    EXEC sp_addrolemember 'Sales_Managers', 'Jeff'B. 添加 SQL Server 用户
    下面的示例将 SQL Server 用户 Michael 添加到当前数据库中的 Engineering 角色。EXEC sp_addrolemember 'Engineering', 'Michael'