当前位置:首页 » 编程语言 » sql精简版授权
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql精简版授权

发布时间: 2022-08-15 07:37:59

sql server怎么给一个用户授权数据库

1.在运行 SQL Server 的计算机上,启动 SQL Server Management Studio。 在“已注册的服务器”窗格中,双击“SQL Server”。
2.在对象资源管理器窗格中,展开“SQL Server”,展开“安全性”文件夹,右键单击“登录”,然后单击“新建登录”。
3.在“登录名 - 新建”对话框中,指定 Windows 身份验证或 SQL Server 身份验证模式。
如果使用 Windows 身份验证,请输入登录名,并选择“允许访问”或“拒绝访问”选项。
如果使用 SQL Server 身份验证,请键入登录名和密码,并确认密码。
4.在左侧窗格中,单击“数据库访问”。
5. 在右侧窗格中,对要授予访问权的数据库选中“允许”复选框,然后单击“确定”。
https://technet.microsoft.com/zh-cn/zh-ch/library/ms172405(v=sql.105).aspx
http://www.cnblogs.com/xwdreamer/archive/2012/06/25/2562828.html

② 请问如何用SQL语句为指定用户授权

用SQL语句为指定用户授权的具体步骤如下:

我们需要准备的材料分别是:电脑、sqlserver2008

1、首先打开sqlserver2008,之后点击打开左上角的“新建查询”。

如何配置使用微软SQL Server 数据分析工具

本系列文章分两部分,本文是第二部分(第一部分参见:你的数据有多干净?)。我们将以测试体验的方式了解微软SQL Server提供的数据分析工具。

其它一些外部分析工具具有更丰富的功能,但是SQL Server授权允许你免费就可以使用这款低调的分析工具。

接下来让我们通过分析“AdventureWorksLT ”数据库中的一些数据来了解这款工具。

在此之前,你需要先安装好SQL Server集成服务,以及与SQL Server捆绑的Visual Studio精简版。在SQL Server 2012中,叫做“SQL Server Data Tools”;而在SQL Server 2008中,名称叫做“Business Intelligence Development Studio”。

如果你缺少这些组件,你可以运行SQL Server安装程序并勾选相关组件,操作很简单。

配置分析工具

不管你启动哪个Visual Studio工作环境,都要创建一个集成服务项目。然后,从SSIS工具箱中拖拽一个数据分析任务到设计面板上,然后双击开始配置。

配置结果信息存储在XML文件中,所以需要指定保存文件的名称和路径。

点击目标旁边的空白框,会出现一个箭头。

点击箭头,然后点击“New File connection”。

在结果框中,指定路径和文件名(包括.xml后缀)。

点击“确定”按钮,然后点击“Quick Profile”按钮。

点击“ADO.NET Connection”旁边的“新建”按钮。

在出现的对话框中,指定SQL Server和托管待分析数据的数据库(我使用的是“AdventureWorksLT2012 ”数据库),然后点击“确定”按钮。

点击表或视图下拉框,选择待分析数据(我选用的是“SalesLT.Proct”)。

保留默认勾选的复选框,然后点击“确定”按钮。确定后就会回到主设计界面。

最后,按“F5”就可以开始分析了。

分析成功,在SQL Server 2008中会有一个绿色小框来显示,在SQL Server 2012中是个绿色小勾。如果你看到红色小框或者红叉,那么可以在“Progress ”标签页找到哪里出错了。

查看结果

假设你看到的是绿色(在集成服务中每个人都喜欢这个颜色),那么接下来启动“Data Profile Viewer”应用程序。在开始菜单中,它在“Microsoft SQL Server XXXX”文件夹的集成服务子文件夹下。

在查看器中,点击“打开”按钮,找到你之前配置的xml文件。你现在可以看到分析结果了。

“adventureWorks”库中的数据本来是干干净净的,所以我做了一些修改,你自己直接做的话看到的分析结果会不一样。

在查看器左侧面板中,你可以看到我们选择的表,它下面是数据分析的五个不同方面(也就是我们配置任务时默认选中的五项)。

点击“Candidate Key Profiles ”,就会在右侧面板中显示结果。

该信息展示了值的唯一性,你可以看看我的数据(修改过的),“名称”列包含的数据不是百分之百唯一的。

我可以点击“名称”列来查看更多,界面中“ Key Violations ”部分下面会显示更多信息。

错误的产品是“HL Road Frame – Black, 58”,问题是有两行有相同的名称(产品名称通常应该是唯一的)。

在“ Key Violations ”中的问题产品上点击,就会显示出需要关注的行。

在左侧面板中(+微信关注网络世界),点击“Column Length Distribution Profiles”。

功能正如其名,这个页面会分析每个列值的长度。

我这里显示的结果,“颜色”列包含列最小长度是2。

就像我们前面例子中所做的那样,我们可以向下钻取,我可以看到那些值的分布,进一步钻取我可以看到脏数据对应的实际行。

其它类型的分析操作都是类似的。

“Column NULL Ratio Profiles”显示了某一列中“NULL”值的百分比。

如果你有些列实际上不允许为“NULL”,例如“Proct Name”,那么这个功能就非常有用。

“Column Statistics Profiles ”显示了日期和数值的最小值、最大值、平均值以及标准偏差。对于识别“327岁的员工”与“价格为负数的产品”这类不合理数据非常有帮助。

“Column Value Distribution Profiles ”显示某一列中有多少不同的值。这对于处理像“性别”这种列是很有用的,你可能预期该列只有两个不同值,但是却找到了15个,很容易发现问题。

还有另外两个分析功能也是可用的,不过默认没有启用。

其中一个就是“Functional Dependency Profile ”,它可以找到那些依赖于其它列值得列。

这一条功能对于检查地址信息时很有用;例如,我们希望相同城市的地址共用相同的邮政编码。

总结

该分析工具的局限性在于,源数据必须存储在SQL Server数据库中。例如,如果你希望分析存储在平面文件中的数据,那么你必须先把数据导入到SQL Server数据库中。

此外,该分析工具不支持创建额外的定制分析功能实现扩展。你看到的所有功能就是它能提供的所有功能。

局限性且放一旁,SQL Server附带提供的这款工具为那些希望得到并能快速运行数据分析的人提供了很好的起点。

④ 在sql语言中,使用什么语句进行授权

授权命令 grant,语法格式(SQL语句不区分大小写):

Grant <权限> on 表名[(列名)] to 用户 With grant option
如给user1添加查询的权限:
grant select on student to user1 With grant option

⑤ sql 授权 ALL

用户1对用户2授权select并可传播授权,用户2对用户3授权select并可传播授权,用户3对用户1授权select
构成一个循环授权了,这肯定是会出错误的了。
授权是可以成功,但是在撤销授权过程中就会出现错误的。

⑥ sqlSQL数据库怎么批量为存储过程/函数授权

1:右键单击登录名Test的属性.

2: 在服务器角色里面选择"public"服务器角色。

3:在用户映射选项当中,选择"db_datareader"、"db_datawriter"、"public"三个数据库角色成员。

此时,已经实现了拥有DML操作权限,如果需要拥有存储过程和函数的执行权限,必须使用GRANT语句去授权,一个生产库的存储过程和函数加起来成千上百,如果手工执行的话,那将是一个辛苦的体力活,而我手头有十几个库,所以必须用脚本去实现授权过程。下面是我写的一个存储过程,亮点主要在于会判断存储过程、函数是否已经授予了EXE或SELECT权限给某个用户。这里主要用到了安全目录试图sys.database_permissions,例如,数据库里面有个存储过程dbo.sp_authorize_right,如果这个存储过程授权给Test用户了话,那么在目录试图sys.database_permissions里面会有一条记录,如下所示:

如果我将该存储过程授予EXEC权限给TEST1,那么
GRANT EXEC ON dbo.sp_diskcapacity_cal TO Test;
GRANT EXEC ON dbo.sp_diskcapacity_cal TO Test1;

SELECT * FROM sys.sysusers WHERE name ='Test' OR name ='Test1'

其实grantee_principal_id代表向其授予权限的数据库主体 ID ,所以我就能通过上面两个视图来判断存储过程是否授予执行权限给用户Test与否,同理,对于函数也是如此,存储过程如下所示,其实这个存储过程还可以扩展,如果您有特殊的需要的话。

复制代码 代码如下:

Code Snippet
USE MyAssistant;
GO
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON
GO
IF EXISTS(SELECT 1 FROM sysobjects WHERE id=OBJECT_ID(N'sp_authorize_right') AND OBJECTPROPERTY(id, 'IsProcere') =1)
DROP PROCEDURE sp_authorize_right;
GO
--=========================================================================================================
-- ProcereName : sp_authorize_right
-- Author : Kerry
-- CreateDate : 2013-05-10
-- Blog : www.cnblogs.com/kerrycode/
-- Description : 将数据库的所有自定义存储过程或自定义函数赋权给某个用户(可以继续扩展)
/**********************************************************************************************************
Parameter : 参数说明
***********************************************************************************************************
@type : 'P' 代表存储过程 , 'F' 代表存储过程,如果需要可以扩展其它对象
@user : 某个用户账户
***********************************************************************************************************
Modified Date Modified User Version Modified Reason
***********************************************************************************************************
2013-05-13 Kerry V01.00.01 排除系统存储过程和系统函数的授权处理
2013-05-14 Kerry V01.00.02 增加判断,如果某个存储过程已经赋予权限
则不做任何操作
***********************************************************************************************************/
--=========================================================================================================
CREATE PROCEDURE sp_authorize_right
(
@type AS CHAR(10) ,
@user AS VARCHAR(20)
)
AS
DECLARE @sqlTextVARCHAR(1000);
DECLARE @UserId INT;
SELECT @UserId = uid FROM sys.sysusers WHERE name=@user;
IF @type = 'P'
BEGIN
CREATE TABLE #ProcereName( SqlText VARCHAR(max));
INSERT INTO #ProcereName
SELECT 'GRANT EXECUTE ON ' + p.name + ' TO ' + @user + ';'
FROM sys.proceres p
WHERE NOT EXISTS( SELECT 1
FROM sys.database_permissions r
WHERE r.major_id = p.object_id
AND r.grantee_principal_id = @UserId
AND r.permission_name IS NOT NULL )
SELECT * FROM #ProcereName;
--SELECT 'GRANT EXECUTE ON ' + NAME + ' TO ' +@user +';'
--FROM sys.proceres;
--SELECT 'GRANT EXECUTE ON ' + [name] + ' TO ' +@user +';'
-- FROM sys.all_objects
--WHERE [type]='P' OR [type]='X' OR [type]='PC'
DECLARE cr_procere CURSOR FOR
SELECT * FROM #ProcereName;
OPEN cr_procere;
FETCH NEXT FROM cr_procere INTO @sqlText;
WHILE @@FETCH_STATUS = 0
BEGIN
EXECUTE(@sqlText);
FETCH NEXT FROM cr_procere INTO @sqlText;
END
CLOSE cr_procere;
DEALLOCATE cr_procere;
END
ELSE
IF @type='F'
BEGIN
CREATE TABLE #FunctionSet( functionName VARCHAR(1000));
INSERT INTO #FunctionSet
SELECT 'GRANT EXEC ON ' + name + ' TO ' + @user + ';'
FROM sys.all_objects s
WHERE NOT EXISTS( SELECT 1
FROM sys.database_permissions p
WHERE p.major_id = s.object_id
AND p.grantee_principal_id = @UserId)
AND schema_id = SCHEMA_ID('dbo')
AND( s.[type] = 'FN'
OR s.[type] = 'AF'
OR s.[type] = 'FS'
OR s.[type] = 'FT'
) ;
SELECT * FROM #FunctionSet;
--SELECT 'GRANT EXEC ON ' + name + ' TO ' + @user +';' FROM sys.all_objects
-- WHERE schema_id =schema_id('dbo')
-- AND ([type]='FN' OR [type] ='AF' OR [type]='FS' OR [type]='FT' );
INSERT INTO #FunctionSet
SELECT 'GRANT SELECT ON ' + name + ' TO ' + @user + ';'
FROM sys.all_objects s
WHERE NOT EXISTS( SELECT 1
FROM sys.database_permissions p
WHERE p.major_id = s.object_id
AND p.grantee_principal_id = @UserId)
AND schema_id = SCHEMA_ID('dbo')
AND( s.[type] = 'TF'
OR s.[type] = 'IF'
) ;
SELECT * FROM #FunctionSet;
--SELECT 'GRANT SELECT ON ' + name + ' TO ' + @user +';' FROM sys.all_objects
-- WHERE schema_id =schema_id('dbo')
-- AND ([type]='TF' OR [type]='IF') ;
DECLARE cr_Function CURSOR FOR
SELECT functionName FROM #FunctionSet;
OPEN cr_Function;
FETCH NEXT FROM cr_Function INTO @sqlText;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT(@sqlText);
EXEC(@sqlText);
FETCH NEXT FROM cr_Function INTO @sqlText;
END
CLOSE cr_Function;
DEALLOCATE cr_Function;
END
GO

⑦ sql2000数据库授权

也许是你家电脑里SQL2000没有授权,微软的SQL2000是收费软件。

另外可能是导入导出步骤问题。
可以参考下面的教程

导出导入SQL Server里某个数据库
1.在SQL Server企业管理器里选中要转移的数据库,按鼠标右键,选所有任务->备份数据库。
2.备份 选数据库-完全,
目的 备份到 按添加按钮
文件名 在SQL Server服务器硬盘下输入一个自定义的备份数据库文件名(后缀一般是bak)
重写 选重写现有媒体
最后按确定按钮。
如果生成的备份数据库文件大于1M,要用压缩工具压缩后再到Internet上传输。
3.通过FTP或者remote desktop或者pcanywhere等方法
把第二步生成的备份数据库文件或者其压缩后的文件传到目的SQL Server数据库,如果有压缩要解压。
4.目的SQL Server数据库如果还没有此数据库,先创建一个新的数据库;
然后选中这个新创建的数据库,按鼠标右键,选所有任务->还原数据库
还原->从设备->选择设备->磁盘->添加(找到要导入的备份数据库文件名)->确定
还原备份集->数据库-完全
最后按确定按钮。完全的数据库导入成功了。
(如果在已经存在的SQL Server数据库上还原数据库可能遇到有还有其它人正在使用它而恢复操做失败,
可以去看 ->管理->当前活动->锁/对象->找到数据库下锁的进程号->到查询分析器里用kill 进程号杀掉这些锁,然后再做还原)
注意:如果在原有的目的SQL Server数据库上从备份文件(*.bak)还原数据库会把已经存在的表、存储过程等数据库对象全部替换成最近这次导入的备份数据库里的内容。
如果一定要还原备份文件(*.bak)里部分数据,需要另外建一个新数据库,其逻辑名称和数量同备份文件(*.bak)里数据库的逻辑名称和数量一致;
新数据库的物理文件名称取得一定要和备份文件(*.bak)里数据库的物理文件不一样才行。

⑧ sql2008数据库的两种授权的区别。

第二种分别授予了user与role的select权限,然后收回了role的权限,并没有收回user个体的权限
所以user仍然具有select查询权限

⑨ 数据库SQL语言怎么授权

SQL语言用GRANT语句向用户授予操作权限,GRANT语句的一般格式为:
GRANT <权限>[,<权限>]...
[ON <对象类型> <对象名>]
TO <用户>[,<用户>]...
[WITH GRANT OPTION];
其语义为:将对指定操作对象的指定操作权限授予指定的用户。
不同类型的操作对象有不同的操作权限,常见的操作权限如表3-4所示。

表3-4 不同对象类型允许的操作权限

对象 对象类型 操作权限
属性列 TABLE SELECT, INSERT, UPDATE, DELETE ALL PRIVIEGES
视图 TABLE SELECT, INSERT, UPDATE, DELETE ALL PRIVIEGES
基本表 TABLE SELECT, INSERT, UPDATE, ALTER, INDEX,DELETE ALL PRIVIEGES
数据库 DATABASE CREATETAB

详细信息…
接受权限的用户可以是一个或多个具体用户,也可以是PUBLIC即全体用户。
如果指定了WITH GRANT OPTION子句,则获得某种权限的用户还可以把这种权限再授予别的用户。如果没有指定WITH GRANT OPTION子句,则获得某种权限的用户只能使用该权限,但不能传播该权限。

例1
把查询Student表权限授给用户U1
GRANT SELECT ON TABLE Student TO U1;

例2
把对Student表和Course表的全部权限授予用户U2和U3
GRANT ALL PRIVILIGES ON TABLE Student, Course TO U2, U3;

例3
把对表SC的查询权限授予所有用户
GRANT SELECT ON TABLE SC TO PUBLIC;

例4
把查询Student表和修改学生学号的权限授给用户U4
详细信息…
这里实际上要授予U4用户的是对基本表Student的SELECT权限和对属性列Sno的UPDATE权限。授予关于属性列的权限时必须明确指出相应属性列名。完成本授权操作的SQL语句为:
GRANT UPDATE(Sno), SELECT ON TABLE Student TO U4;

例5
把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户
GRANT INSERT ON TABLE SC TO U5 WITH GRANT OPTION;
详细信息…
执行此SQL语句后,U5不仅拥有了对表SC的INSERT权限,还可以传播此权限,即由U5用户发上述GRANT命令给其他用户。

例如U5可以将此权限授予U6:
GRANT INSERT ON TABLE SC TO U6 WITH GRANT OPTION;
同样,U6还可以将此权限授予U7:
GRANT INSERT ON TABLE SC TO U7;
因为U6未给U7传播的权限,因此U7不能再传播此权限。

例6
DBA把在数据库S_C中建立表的权限授予用户U8
GRANT CREATETAB ON DATABASE S_C TO U8;

⑩ sql数据库如何收费/授权

SQL Server、Oracle、MySQL,商业使用都是收费的。小公司不规范,可能一直在免费用,这个不在讨论之列,但是,谈到商业使用的费用,我们来做个大致的比较:

就比较 1CPU + 50 Client Access License ,而且都用企业版的情况吧:

SQL Server:我看到的数据是最新的SQL Server 2012 Enterprise的价格,是:人民币 12万出头

Oracle:我是间接地得到数据的,价格为:人民币 56.3万

MySQL:不详。价格可能为5000到10000美元,合 3万五到7万人民币,但是,请注意,这是每年的费用。

如果谁有更准确的数据来源,请回帖指出,最好是官方的权威数据。多谢,定将送分感谢。