当前位置: 首页 > news >正文

用SQL创建数据库登录用户

 

用SQL创建数据库登录用户

 

用户通过用来建立连接权限的登录(身份验证),获得 Microsoft® SQL Server™ 数据库的访问权限。因为 SQL Server 使用 Microsoft® Windows® 2005 身份验证,所以每个 SQL Server 登录必须与一个有效 Windows 帐户相关联。然后,可以为每个基于 Windows 用户或组帐户的 SQL 登录授予连接到 SQL Server 的权限。

注意   SQL Server 7.0 SQL Server 2000 不再独立于操作系统而管理组。SQL Server 较低版本中的组已被功能更强的角色所替代。但是,您可以在整个 Windows 组级管理 SQL Server 的安全。

如果您拥有 SQL Server 的系统管理员权限,则可以使用以下方法创建和修改 SQL Server 登录:

·         SQL Server 2005新建查询中创建 SQL Server 登录

·         使用 SQL Server 工作流模板实例化向导创建 SQL Server 登录

当您使用向导从模板中创建工作流应用程序实例时,可以添加 SQL Server 登录。但是,只有当应用程序创建者拥有 SQL Server 系统管理员权限,并且 SQL Server 登录已经具有有效的 Windows 帐户时,此功能才有效。除非服务器管理员也为 modAppOwners 组授予了 SQL Server 系统管理员权限,否则 modAppOwners 成员不能创建 SQL Server 登录。

命名规则

用户名或组名不能与所管理的域或计算机的任何其它用户名或组名相同。它最多可包含 20 个大写或小写字符,但不能包含以下字符:

" / \ [ ] : ; | = , + * ? < >

用户名或组名不能只包含句点 (.) 和空格。

有关 SQL Server 登录的命名规则的详细信息,请参阅“SQL Server 联机丛书

  

SQL创建登录示例:

 

A.   创建具有主默认数据库的登录   ID  
 
下例为用户   Victoria   创建一个   SQL   Server   登录,没有指定默认数据库。  
   
  EXEC   sp_addlogin   'Victoria',   'B1r12-36'  
   
  B.  
创建登录   ID   和默认数据库  
 
下例为用户   Albert   创建一个   SQL   Server   登录,并指定密码“B1r12-36”以及名为   corporate   的默认数据库。  
   
  EXEC   sp_addlogin   'Albert',   'B1r12-36',   'corporate'  
   
  C.
创建使用其它默认语言的登录   ID  
 
下例为用户   Claire   Picard   创建一个   SQL   Server   登录,密码为“B1r12-36”,默认数据库为   public_db,默认语言为   French  
   
  EXEC   sp_addlogin   'Claire   Picard',   'B1r12-36',   'public_db',   'french'  
   
  D.  
创建带有特定   SID   的登录   ID  
 
下例为用户   Michael   创建一个   SQL   Server   登录,密码为“B1r12-36”,默认数据库为   pubs,默认语言为   us_englishSID     0x0123456789ABCDEF0123456789ABCDEF  
   
  EXEC   sp_addlogin   'Michael',   'B1r12-36',   'pubs',   'us_english',   0x0123456789ABCDEF0123456789ABCDEF  
   
  E.  
创建登录   ID   并且不加密密码  
 
下例在   Server1   上为用户   Margaret   创建了一个密码为“B1r12-36”   SQL   Server   登录,再析取此加密密码,然后使用前面加密的密码将用户登录   Margaret   添加到   Server2,但不对此密码进一步加密。之后,用户   Margaret   即可使用密码“Rose”登录到   Server2  
   
  --   Server1  
  EXEC   sp_addlogin   'Margaret',   'B1r12-36'  
   
  --Results  
  New   login   created.  
   
  --   Extract   encrypted   password   for   Margaret  
  SELECT   CONVERT(VARBINARY(256),   password)  
        FROM   syslogins    
        WHERE   name   =   'Margaret'  

--Results  
  ------------------------------------------------------------------    
  0x0100163A5F026DA00F9FBCF3CB2E75B0C84887F3A87E191F8E0B7A2660F064A52B19590B9DE20D94DC0DFF857EDA  
   
  (1   row(s)   affected)  
   
  --   Server2  
  EXEC   sp_addlogin   'Margaret',   0x0100163A5F026DA00F9FBCF3CB2E75B0C84887F3A87E191F8E0B7A2660F064A52B19590B9DE20D94DC0DFF857EDA,    
        @encryptopt   =   'skip_encryption'  

 

 

 

代码
 1  /* *---建立营业主管登录帐户--- */
 2  EXEC  sp_addlogin  ' trafficManager ' ' manager '
 3  /* ---建立营业员登录帐户--- */
 4  EXEC  sp_addlogin  ' seller ' , ' seller '
 5  GO
 6  /* ---建立数据库用户--- */
 7  USE  productDB
 8  GO
 9  EXEC  sp_grantdbaccess  ' trafficManager ' , ' manager '
10  EXEC  sp_grantdbaccess  ' seller ' , ' seller '
11  GO
12  /* ---向新建立的数据库用户授予权限--- */
13  USE  productDB
14  GO
15  GRANT   select , insert , update , delete   on  proInfo  to  manager
16  GRANT   select   on  proInfo  to  seller
17  GO

 

 

 

代码
USE  master
GO
/* ---检查是否已存在productDB数据库:查询master数据库中的系统表sysdatabases--- */
IF   EXISTS  ( SELECT   *   FROM  sysdatabases  WHERE  name  =   ' productDB ' )
    
DROP   DATABASE  productDB
GO
EXEC  xp_cmdshell  ' mkdir D:\SQL '    -- 调用DOS命令创建文件夹,后续章节将讲解
/*
-----建库-------- */
CREATE   DATABASE  productDB
 
ON  
 (
  
/* ----数据文件的具体描述-- */
  NAME 
=   ' proDB_data ' -- 主数据文件的逻辑名
  FILENAME  =   ' D:\SQL\proDB_data.mdf '  ,  -- 主数据文件的物理名
  SIZE  =   10  MB,   -- 主数据文件初始大小
  FILEGROWTH  =   20 %     -- 主数据文件的增长率
 ) 
 
LOG   ON  
 (
  
/* ----日志文件的具体描述,各参数含义同上-- */
  NAME 
=   ' proDB_log '
  FILENAME 
=   ' D:\SQL\proDB_log.ldf '  ,
  SIZE 
=  1MB, 
  MAXSIZE 
=  10MB,
  FILEGROWTH 
=   20 %
 )
GO
代码
-- -- 添加主键约束(stuNo作为主键)
ALTER   TABLE  stuInfo 
ADD   CONSTRAINT  PK_stuNo  PRIMARY   KEY  (stuNo)
-- -添加唯一约束(身份证号唯一,因为每人的身份证号全国唯一)
ALTER   TABLE  stuInfo 
ADD   CONSTRAINT  UQ_stuID  UNIQUE  (stuID)
-- -添加默认约束(如果地址不填,默认为“地址不详”)
ALTER   TABLE  stuInfo 
ADD   CONSTRAINT  DF_stuAddress  DEFAULT  ( ' 地址不详 ' FOR  stuAddress
-- -添加检查check约束,要求年龄只能在15-40岁之间
ALTER   TABLE  stuInfo 
ADD   CONSTRAINT  CK_stuAge  CHECK (stuAge  BETWEEN   15   AND   40 )
-- 添加外键约束(主表stuInfo和从表stuMarks建立关系,关联字段为stuNo)
ALTER   TABLE  stuMarks
   
ADD   CONSTRAINT  FK_stuNo          
     
FOREIGN   KEY (stuNo)  REFERENCES  stuInfo(stuNo)
GO

 

 

 

 

约束名的取名规则推荐采用:约束类型 _ 约束字段
主键( Primary Key )约束:如 PK _stuNo
唯一( Unique Key )约束:如 UQ _stuID
默认( Default Key )约束:如 DF _stuAddress
检查( Check Key )约束:如 CK _stuAge
外键 (Foreign Key) 约束:如 FK _stuNo

 

 

 

Select  bookid,bookname,价格 = case  
when  price = ''   then   ' 价格未知 '  
when  price  between   10   and   20   then   ' 价格在10至20之间 '  
when  price  between   20   and   30   then   ' 价格适中 '  
else   cast (price  as   char ( 10 ))
end  
from  books

 

 

 

代码
USE  stuDB
GO
-- 恢复原来的数据
--
UPDATE bank SET currentMoney=currentMoney-1000 WHERE customerName='李四' 
SET  NOCOUNT  ON   -- 不显示受影响的行数信息
print   ' 查看转帐事务前的余额 '
SELECT   *   FROM  bank  
GO

/* --开始事务(指定事务从此处开始,后续的T-SQL语句都是一个整体-- */
BEGIN   TRANSACTION  
/* --定义变量,用于累计事务执行过程中的错误-- */
DECLARE   @errorSum   INT  
SET   @errorSum = 0    -- 初始化为0,即无错误

/* --转帐:张三的帐户少1000元,李四的帐户多1000元 */
UPDATE  bank  SET  currentMoney = currentMoney - 800   WHERE  customerName = ' 张三 '
SET   @errorSum = @errorSum + @@error    -- 累计是否有错误
UPDATE  bank  SET  currentMoney = currentMoney + 800   WHERE  customerName = ' 李四 '
SET   @errorSum = @errorSum + @@error    -- 累计是否有错误

print   ' 查看转帐事务过程中的余额 '
SELECT   *   FROM  bank 

/* --根据是否有错误,确定事务是提交还是撤销--- */
IF   @errorSum <> 0    -- 如果有错误
   BEGIN
    
print   ' 交易失败,回滚事务 '
    
ROLLBACK   TRANSACTION  
  
END   
ELSE
  
BEGIN
    
print   ' 交易成功,提交事务,写入硬盘,永久的保存 '
    
COMMIT   TRANSACTION    
  
END
GO

print   ' 查看转帐事务后的余额 '
SELECT   *   FROM  bank  
GO
 
 
 
代码
USE  stuDB
GO
/* --检测是否存在该索引(索引存放在系统表sysindexes中)---- */
IF   EXISTS  ( SELECT  name  FROM  sysindexes 
          
WHERE  name  =   ' IX_stuMarks_writtenExam ' )
   
DROP   INDEX  stuMarks.IX_stuMarks_writtenExam   -- 删除索引
/*
--笔试列创建聚集索引:填充因子为30%-- */
CREATE   NONCLUSTERED   INDEX  IX_stuMarks_writtenExam
   
ON  stuMarks(writtenExam)
       
WITH   FILLFACTOR =   30
GO

/* --指定按索引:IX_stuMarks_writtenExam查询-- */
SELECT   *   FROM  stuMarks 
  (
INDEX = IX_stuMarks_writtenExam)
    
WHERE  writtenExam  BETWEEN   60   AND   90
代码
 
 
--  Purpose: 常用系统存储过程使用

EXEC  sp_databases   -- 列出当前系统中的数据库

EXEC   sp_renamedb  ' Northwind ' , ' Northwind1 ' -- 改变数据库名称(单用户访问)

USE  stuDB
GO

EXEC  sp_tables   -- 当前数据库中查询的对象的列表

EXEC  sp_columns stuInfo   -- 返回某个表列的信息

EXEC  sp_help stuInfo   -- 查看表stuInfo的信息

EXEC  sp_helpconstraint stuInfo  -- 查看表stuInfo的约束

EXEC  sp_helpindex stuMarks   -- 查看表stuMarks的索引

EXEC  sp_helptext  ' view_stuInfo_stuMarks '   -- 查看视图的语句文本

EXEC  sp_stored_procedures   -- 返回当前数据库中的存储过程列表

 

 

 

 

 

转载于:https://www.cnblogs.com/zhangtao/archive/2010/11/10/1874273.html

相关文章:

  • 《Spark大数据分析:核心概念、技术及实践》一1.7 总结
  • PDF 补丁丁(修改书签、拆分合并、提取图片、制作图片PDF) 0.2.9.6
  • 《JavaScript数据可视化编程》——导读
  • C# 空接合(??)运算符
  • 《Java程序员面试秘笈》—— 面试题8 在Java中,对象是如何传递消息的
  • 学会总结,学会关注细节,学会拥有一颗平静的心。
  • Linux集群和自动化维2.2.1 Shell脚本的基本元素
  • c#_实现FTP方法(一) --- FtpWebRequest
  • 友善经典之作mini6410介绍
  • Linux集群和自动化维2.4.1 sed的基础语法格式
  • [周鸿祎] 与其苟且活着,不如奋起抗争
  • 机器人系统设计与制作:Python语言实现3.3 本章小结
  • VC6 ODBC 例子 之二
  • 【STM32 .Net MF开发板学习-21】蓝牙遥控智能小车(PC模式)
  • 《众妙之门——移动交互体验设计》一1.2 物物互联
  • 【Leetcode】101. 对称二叉树
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【个人向】《HTTP图解》阅后小结
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • CentOS6 编译安装 redis-3.2.3
  • Computed property XXX was assigned to but it has no setter
  • ES6--对象的扩展
  • iOS编译提示和导航提示
  • Java面向对象及其三大特征
  • MobX
  • Python学习之路13-记分
  • 百度地图API标注+时间轴组件
  • 程序员最讨厌的9句话,你可有补充?
  • 当SetTimeout遇到了字符串
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 盘点那些不知名却常用的 Git 操作
  • 判断客户端类型,Android,iOS,PC
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • ​io --- 处理流的核心工具​
  • ​批处理文件中的errorlevel用法
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • %check_box% in rails :coditions={:has_many , :through}
  • (C#)获取字符编码的类
  • (C语言)fread与fwrite详解
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (论文阅读40-45)图像描述1
  • (一)WLAN定义和基本架构转
  • (转)拼包函数及网络封包的异常处理(含代码)
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .describe() python_Python-Win32com-Excel
  • .gitignore文件---让git自动忽略指定文件
  • .Net 6.0 处理跨域的方式
  • .Net 8.0 新的变化
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .net解析传过来的xml_DOM4J解析XML文件
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • @FeignClient注解,fallback和fallbackFactory