SQL Server2005SQLCLR代码安全之权限
一、 SQLCLR权限集级别
当你使用CREATE ASSEMBLY语句把一个程序集加载到一个数据库中时,SQL Server提供了三种权限集级别:SAFE,EXTERNAL_ACCESS和UNSAFE。这些权限集形成如图3和图5(均请参考第二篇)所示的 AppDomain策略级别。
下面是一个典型的语句,它实现安装位于FileLoader.dll文件内的一个程序集,并且赋予它EXTERNAL_ACCESS权限集。
CREATE ASSEMBLY FileAccess
from 'E:FileLoader.dll'
WITH PERMISSION_SET = EXTERNAL_ACCESS
GO
在代码执行时,每一种权限集级别都授予该代码一组不同的CAS许可权集。下面让我们开始讨论在每一级上授予的特定许可权。
(1) SAFE
SAFE是默认的权限集。它仅授予足够的许可权来执行代码,实现不要求存取外部资源的内部计算以及存取在宿主SQL Server实例中的数据和对象。注意,SAFE代码不能存取外部的资源,因此它不能读取或写磁盘文件,不能存取任何其它SQL Server实例,或读取或写注册表。而且,该代码也必须被检验为类型安全的,这将有助于避免各种包括缓冲区溢出在内的攻击。
SAFE代码是更可靠和安全的SQLCLR代码。它能够实现用T-SQL书写的代码在数据库和服务器实例内所能实现的几乎一样的功能。它能够授予如表格1所列举的CAS许可权。从表格1中可见,该代码能够运行和读取宿主SQL Server实例中的对象和数据-借助于一种特定形式的ADO.NET连接串,或者是"context connection=true"或者是"context connection=yes"来实现。任何其它连接串都可能会导致某种安全异常。
表格1:授予给SAFE程序集的权限集。
权限 类型 限制
SecurityPermission 受限制 执行
SqlClientPermission 受限制 不能是空口令,只能使用上下文连接串
授予给一个程序集的结果权限集是列举于表格1中的许可权权限集与来自企业、机器和用户权限集的交集。因为这些级别默认会拥有所有的许可权,所以程序集仅接受列举于表格1中的权限。注意,请确保你一定要理解这些权限。
(2) EXTERNAL_ACCESS
与SAFE相比,EXTERNAL_ACCESS权限集允许有限制地存取存在于 SQL Server实例外部的资源-包括磁盘文件,在其它SQL Server实例中的数据和对象,环境变量和注册表的一些部分。存取这些其它资源通常是在SQL Server服务帐户的安全上下文中进行的,但是,该代码能够模拟其它用户进
相关文档:
select top PageSize * from 表
where 条件 and id not in
(select top PageSize*(CurrentPageIndex-1) id from 表 where 条件 order by 排序条件)
order by 排序条件
《PageSize 是GridView中每页显示的信息条数,PageSize*(CurrentPageIndex-1) 在SQL中不识别,需定义变量来替换》 ......
在程序中我们可能经常会遇到这种情况,比如要取一个listbox里面的选择项,得到的结果可能是string ID="id1,id2,id3,id4",然后我们要把这些ID插入到数据库中,同时每个id对应的是要插入一条记录。实现的方法有很多,但是如果我们通过下面这个函数(RecurrentSplit)就能简单的达到 ......
1.连接数据库文件
<add name="LocalSqlServer" connectionString="Data Source=.\SQLExpress;Integrated Security=True;AttachDBFilename=|DataDirectory|TimeTracker.mdf;User Instance=true" />
SqlConnectionStringBuilder实例化时,要用到connectionString,如:SqlConnectionStringBuild builder = new SqlCon ......
从dateTime类型数据中获取季度:
select cast(datepart(q,sign_date) as varchar(2))+'季度'
一.sql server日期时间函数
1. 当前系统日期、时间
select getdate()
2. dateadd 在向指定日期加上一段时间 ......
解压 SQLServer2005SP3-KB955706-x86-CHS.exe 文件(使用 WinRAR 可直接解压,或使用 /extract)
解压后文件夹 搜索 “*.msi *.msp” ,然后复制所有搜索到的文件 放到 D:\SQL2005\SP3 中.
提取 cs_sql_dev_all_dvd.iso(SQL Server 2005 开发版) 中的 x86 版本,放到 D:\SQL2005\MSSQL 中;此时 D:\SQL2005\M ......