当前位置: 首页 > 面试题库 >

我正在尝试创建存储过程来创建登录名和数据库用户?

汪典
2023-03-14
问题内容

我正在使用SQL Server开发C#应用程序,并想调用存储过程来创建登录名和用户。

我正在寻找最简单的方法来做到这一点,只是默认的东西,但有用户名和密码。

登录旁边的创建用红色下划线标出?

但是我认为我的登录很好吗?请告诉我我是否缺少任何东西。

与创建用户一起,是否只是这样的一个班轮?

CREATE PROCEDURE CreateLoginAndUser 
       @UserName

   CREATE LOGIN @UserName 
   WITH PASSWORD = 'password', 
        DEFAULT_DATABASE = [TestAudit],
        DEFAULT_LANGUAGE = [British],
        CHECK_EXPIRATION=OFF,
        CHECK_POLICY=ON;

   CREATE USER 'DEV' + @UserName 
       [{ FOR | FROM } LOGIN @UserName] [WITH DEFAULT_SCHEMA = schema]

我不明白FOR,并FROM

我可以做这样的事情:

CREATE PROCEDURE CreateLoginAndUser
     @UserName

    CREATE LOGIN @UserName  
    WITH PASSWORD = 'password', 
         DEFAULT_SCHEMA = schema

    CREATE USER 'DEV'+@UserName 
       [{ FOR | FROM } LOGIN @UserName] [WITH DEFAULT_SCHEMA = schema]

Google如何搜索以下来源:

http://ss64.com/sql/login_c.html

http://ss64.com/sql/user_c.html


问题答案:

考虑使用动态SQL创建用户。例如,要创建一个名为的服务器登录名,并使用一个名为@login的数据库用户'DEV' + @login

create procedure dbo.CreateLoginAndUser(
        @login varchar(100),
        @password varchar(100),
        @db varchar(100))
as
declare @safe_login varchar(200)
declare @safe_password varchar(200)
declare @safe_db varchar(200)
set @safe_login = replace(@login,'''', '''''')
set @safe_password = replace(@password,'''', '''''')
set @safe_db = replace(@db,'''', '''''')

declare @sql nvarchar(max)
set @sql = 'use ' + @safe_db + ';' +
           'create login ' + @safe_login + 
               ' with password = ''' + @safe_password + '''; ' +
           'create user DEV' + @safe_login + ' from login ' + @safe_login + ';'
exec (@sql)
go

在客户端构造SQL语句可能会更容易。但是即使那样,您也不能在create login语句中使用参数。因此,请对SQL注入保持警惕。



 类似资料:
  • 我试着创建这个过程(作为一个系统),它需要两个参数,用户名和密码,并根据它们创建一个用户: 问题是,当我尝试执行此过程(作为一个系统)时,我遇到了以下错误: 错误报告:ORA-01031:权限不足ORA-06512:在第9行的“系统.过程\u创建\u客户端”处ORA-06512:在第1 01031行。00000-“权限不足”*原因:试图在没有适当权限的情况下更改当前用户名或密码。如果试图在没有必要

  • 我在Dreamweaver的帮助下创建了这个登录页面,并希望使其用户名字段必须与SQL数据库中的用户名匹配才能创建密码。我不太熟悉这一点,也不确定我需要做什么来要求一个现有的用户名,然后向数据库中的用户名行添加密码。 以下是Dreamweaver创建的php代码:与数据库的连接已经存在,因此我知道下面的代码中不存在该连接。这就像一个正常的注册页面一样好用,但我不希望任何人都能注册。

  • MySQL 存储过程是一些 SQL 语句的集合,比如有时候我们可能需要一大串的 SQL 语句,或者说在编写 SQL 语句的过程中需要设置一些变量的值,这个时候我们就完全有必要编写一个存储过程。 编写存储过程并不是件简单的事情,但是使用存储过程可以简化操作,且减少冗余的操作步骤,同时,还可以减少操作过程中的失误,提高效率,因此应该尽可能的学会使用存储过程。 下面主要介绍如何创建存储过程。 可以使用

  • 在Teradata16上创建存储过程时sql出错,请问这个查询有什么问题? 替换过程tutorial_db.banks(out test Varchar(20))BEGIN select name from tutorial_db.banks end;

  • 问题内容: 我正在尝试调用从pyodbc创建数据库的存储过程 以下是代码的最小示例 理想情况下,该代码应在SQL Server实例中创建一个名为“ Test ”的数据库。这不会产生任何错误。但是没有创建数据库。 跑步 问题答案: Python DB API2.0指定默认情况下,应在禁用自动提交的情况下打开连接。但是,许多数据库要求DDL语句 不在 事务内执行。尝试在禁用自动提交的情况下执行DDL语

  • 主要内容:创建一个远程存储库在本章中,我们将看到如何创建一个远程Git仓库; 我们需要一个远程Git仓库来执行团队协作。这一篇文章很重要,直接影响到后面的章节的学习。所以,希望大家可先耐心地看完本章内容,并按本章一步步的操作。 创建一个远程存储库 我们将演示在 http://git.oschina.net/ 软件项目的托管平台上创建和初始化一个新的存储库。 注:你也可以使用 GitHub (http://github.com