CLR 用户定义函数只是在 .NET 程序集中定义的静态方法。CREATE FUNCTION 语句已扩展为支持创建 CLR
用户定义函数。
1、创建数据库项目
2、添加用户定义函数
以下是演示代码:
Code
using
System;
using
System.Data;
using
System.Data.SqlClient;
using
System.Data.SqlTypes;
using
Microsoft.SqlServer.Server;
using
System.Text.RegularExpressions;
// 示意代码
public
partial
class
UserDefinedFunctions
{
public
static
readonly
RegexOptions Options
=
RegexOptions.IgnorePatternWhitespace
|
RegexOptions.Singleline;
[Microsoft.SqlServer.Server.SqlFunction]
public
static
string
RegexValue(SqlChars input, SqlString pattern)
{
Regex regex
=
new
Rege ......
1. 利用测试工具模拟多个最终用户进行并发测试; 这种测试方法的缺点:最终用户往往并不是直接连接到数据库上,而是要经过一个和多个中间服务程序,所以并不能保证访问数据库时还是并发。其次,这种测试方法需要等到客户端程序、服务端程序全部完成才能进行; 2. 利用测试工具编写脚本,直接连接数据库进行并发测试; 这种方法可以有效的保证并发操作,而且在数据库访问程序完成即可测试,可以大
1. 利用测试工具模拟多个最终用户进行并发测试;
这种测试方法的缺点:最终用户往往并不是直接连接到数据库上,而是要经过一个和多个中间服务程序,所以并不能保证访问数据库时还是并发。其次,这种测试方法需要等到客户端程序、服务端程序全部完成才能进行;
2. 利用测试工具编写脚本,直接连接数据库进行并发测试;
这种方法可以有效的保证并发操作,而且在数据库访问程序完成即可测试,可以大大缩短测试时间,而且测试效果更好。
下面通过一个演示程序,演示使用Robot使用第二种测试方法进行数据库的并发测试。
第一步:创建演示程序
打开SQL SERVER查询分析器,在SQL SERVER测试数据库中执行下列脚本(脚本执行操作:创建表testtable,并插入一条记录;创建存储过程test): ......
TOP 增强。可以指定一个数字表达式,以返回要通过查询影响的行数或百分比,还可以根据情况使用变量或子查询。
可以在DELETE、UPDATE和INSERT查询中使用TOP选项。
2、更好地替换SET ROWCOUNT选项,使之更为有效。
OUTPUT
1、SQL Server 2005引入一个新的OUTPUT子句,以使您可以冲修改语句(INSERT、UPDATE、DELETE)中将数据返回到表变量中。
2、新的OUTPUT子局的语法为:
OUTPUT INTO @table_variable
可以通过引用插入的表或删除的表来访问被修改的行的旧/新影象,其方式与访问触发器类似。在INSERT语句中,只能访问插入的表。在DELETE语句中,只能访问删除的表。在UPDATE语句中,可以访问插入的表和删除的表。
USE demo
GO
CREATE TABLE tt
(
id INT IDENTITY,
c1 VARCHAR(15)
)
GO
INSERT INTO tt VALUES ('r1')
INSERT INTO tt VALUES ('r2')
INSERT INTO tt VALUES ('r5')
INSERT INTO tt VALUES ('r6')
INSERT INTO tt VALUES ('r7')
INSERT INTO tt VALUES ('r8')
INSERT INTO tt VALUES ('r9')
INSERT INTO tt VALUES ('r10')
DECLARE @del AS TABLE (deletedId INT, deletedValue VARCHAR(15))
DELETE tt
OUTPUT DELETED.id, DELETE ......
SQL2005中row_number( )、rank( )、dense_rank( )、ntile( )函数的用法(2) 收藏
SQL server 2005新增的几个函数,分别是row_number( )、rank( )、,DENSE_RANK( )、ntile( )下面以实例分别简单讲解。
1.row_number( )
先来点数据,先建个表
SET NOCOUNT ON
CREATE TABLE Person(
FirstName VARCHAR(10),
Age INT,
Gender CHAR(1))
INSERT INTO Person VALUES ('Ted',23,'M')
INSERT INTO Person VALUES ('John',40,'M')
INSERT INTO Person VALUES ('George',6,'M')
INSERT INTO Person VALUES ('Mary',11,'F')
INSERT INTO Person VALUES ('Sam',17,'M')
INSERT INTO Person VALUES ('Doris',6,'F')
INSERT INTO Person VALUES ('Frank',38,'M')
INSERT INTO Person VALUES ('Larry',5,'M')
INSERT INTO Person VALUES ('Sue',29,'F')
INSERT INTO Person VALUES ('Sherry',11,'F')
INSERT INTO Person VALUES ('Marty',23,'F')
直接用例子说明问题:
SELECT ROW_NUMBER() OVER (ORDER BY Age) AS [Row Number by Age],
FirstName,
Age
from Person
出现的数据如下
Row Number by Ag ......
SQL SERVER 数据库链接服务器总结
前段时间,公司的项目开发用到C/S、B/S两种架构。CS部分因为数据的保密性和安全性,采用SQL SERVER 2000(后来随着软件版本升级,采用SQL Server 2005)局域网络。B/S部分采用Oracle9.2数据库。两个部分物理隔离,定时通过网络切换器进行网络切换以完成数据交换。
因此在SQL SERVER 数据库服务器上建立到Oracle远程链接服务器。下面就在不同版本中的SQL SERVER上建立连接服务器的经验作一小结,希望对各位有用。
1、SQL SERVER 2000
SQL SERVER 2000下连接服务器在“安全性”节点下。右键点击“链接服务器”——新建,打开连接服务器属性框。
在链接服务器编辑框填写链接服务器的名称,这是远程数据库到本地SQL Server的映射。
服务器类型选择其它数据库(SQL SERVER 不做阐述)。到Oracle数据库的链接提供程序有两种:Microsoft OLE DB Provider for Oracle; Oracle Provider for OLE DB.这两种提供者有不同的特点,表现在数据链接速度上也不同,在此先选择前者。
......
递归的通用表表达式
递归的CTE是根据至少两个查询(或者称为两个成员)构建的,一个是非递归查询,也成为固定成员,只能调用一次,另外一个是递归查询,也成为递归成员(RM),可以反复调用,直到查询不再返回行。查询由UNION ALL运算符连接为一个单独的CTE。
--使用递归的通用表表达式
GO
CREATE TABLE CarParts
(
CarID INT NOT NULL,
Part VARCHAR(15),
SubPart VARCHAR(15),
Qty INT
)
GO
INSERT CarParts VALUES (1, 'Body', 'Door', 4)
INSERT CarParts VALUES (1, 'Body', 'Trunk Lid', 1)
INSERT CarParts VALUES (1, 'Body', 'Car Hood', 1)
INSERT CarParts VALUES (1, 'Door', 'Handle', 1)
INSERT CarParts VALUES (1, 'Door', 'Lock', 1)
INSERT CarParts VALUES (1, 'Door', 'Window', 1)
INSERT CarParts VALUES (1, 'Body', 'Rivets', 1000)
INSERT CarParts VALUES (1, 'Door', 'Rivets', 100)
INSERT CarParts VALUES (1, 'Door', 'Mirror', 1)
GO
SELECT * from CarParts
GO
WITH CarPartsCTE(SubPart, Qty)
AS
(
-- 固定成员 (AM):
-- SELECT查询无需参考CarPartsCTE
SELECT SubPart, Qty
from CarParts
WHERE Part = ......