随笔-7  评论-0  文章-0  trackbacks-0
  2008年11月22日
全文索引——CONTAINS 语法
我们通常在 Where 子句中使用 CONTAINS ,就象这样:Select * FROM table_name Where CONTAINS(fullText_column,'search contents')。

我们通过例子来学习,假设有表 students,其中的 address 是全文本检索的列。
1. 查询住址在北京的学生
Select student_id,student_name
FROM students
Where CONTAINS( address, 'beijing' )
remark: beijing是一个单词,要用单引号括起来。

2. 查询住址在河北省的学生
Select student_id,student_name
FROM students
Where CONTAINS( address, '"HEIBEI province"' )
remark: HEBEI province是一个词组,在单引号里还要用双引号括起来。

3. 查询住址在河北省或北京的学生
Select student_id,student_name
FROM students
Where CONTAINS( address, '"HEIBEI province" or beijing' )
remark: 可以指定逻辑操作符(包括 AND ,AND NOT,OR )。

4. 查询有 '南京路' 字样的地址
Select student_id,student_name
FROM students
Where CONTAINS( address, 'nanjing NEAR road' )
remark: 上面的查询将返回包含 'nanjing road','nanjing east road','nanjing west road' 等字样的地址。
A NEAR B,就表示条件: A 靠近 B。

5. 查询以 '湖' 开头的地址
Select student_id,student_name
FROM students
Where CONTAINS( address, '"hu*"' )
remark: 上面的查询将返回包含 'hubei','hunan' 等字样的地址。
记住是 *,不是 %。

6. 类似加权的查询
Select student_id,student_name
FROM students
Where CONTAINS( address, 'ISABOUT (city weight (.8), county wright (.4))' )
remark: ISABOUT 是这种查询的关键字,weight 指定了一个介于 0~1之间的数,类似系数(我的理解)。表示不同条件有不同的侧重。

7. 单词的多态查询
Select student_id,student_name
FROM students
Where CONTAINS( address, 'FORMSOF (INFLECTIONAL,street)' )
remark: 查询将返回包含 'street','streets'等字样的地址。
对于动词将返回它的不同的时态,如:dry,将返回 dry,dried,drying 等等。

以上例子都使用英文,不使用中文是因为有的查询方式中文不支持,而且我的计算机是英文系统。
全文索引——CONTAINS 语法
我们通常在 Where 子句中使用 CONTAINS ,就象这样:Select * FROM table_name Where CONTAINS(fullText_column,'search contents')。

我们通过例子来学习,假设有表 students,其中的 address 是全文本检索的列。
1. 查询住址在北京的学生
Select student_id,student_name
FROM students
Where CONTAINS( address, 'beijing' )
remark: beijing是一个单词,要用单引号括起来。

2. 查询住址在河北省的学生
Select student_id,student_name
FROM students
Where CONTAINS( address, '"HEIBEI province"' )
remark: HEBEI province是一个词组,在单引号里还要用双引号括起来。

3. 查询住址在河北省或北京的学生
Select student_id,student_name
FROM students
Where CONTAINS( address, '"HEIBEI province" or beijing' )
remark: 可以指定逻辑操作符(包括 AND ,AND NOT,OR )。

4. 查询有 '南京路' 字样的地址
Select student_id,student_name
FROM students
Where CONTAINS( address, 'nanjing NEAR road' )
remark: 上面的查询将返回包含 'nanjing road','nanjing east road','nanjing west road' 等字样的地址。
A NEAR B,就表示条件: A 靠近 B。

5. 查询以 '湖' 开头的地址
Select student_id,student_name
FROM students
Where CONTAINS( address, '"hu*"' )
remark: 上面的查询将返回包含 'hubei','hunan' 等字样的地址。
记住是 *,不是 %。

6. 类似加权的查询
Select student_id,student_name
FROM students
Where CONTAINS( address, 'ISABOUT (city weight (.8), county wright (.4))' )
remark: ISABOUT 是这种查询的关键字,weight 指定了一个介于 0~1之间的数,类似系数(我的理解)。表示不同条件有不同的侧重。

7. 单词的多态查询
Select student_id,student_name
FROM students
Where CONTAINS( address, 'FORMSOF (INFLECTIONAL,street)' )
remark: 查询将返回包含 'street','streets'等字样的地址。
对于动词将返回它的不同的时态,如:dry,将返回 dry,dried,drying 等等。

以上例子都使用英文,不使用中文是因为有的查询方式中文不支持,而且我的计算机是英文系统。
文章来源:http://www.nbman.cn/default.asp?id=97
posted @ 2008-11-22 22:36 束居 阅读(103) 评论(0) 编辑
1.使用索引查找
  对数据最快进行查找的方法是使用索引,如果要取出其他的列,sql会使用BookMark,索引可以直接在表级应用where子句和连接条件。
  例子:表regisrersys 索引列userid 数据量:2万
        select * from registersys where userid='test01'
        select * from registersys where studentname='test01'
        在执行计划中,1为1.98% 2为98.02%,因为2引起了全表查询  
2。SARG
  SARG(Search Argument)搜索参数,即sql使用索引优化where条件,下面是一些基本原则
  ·and是SARG,但or不是
  ·否定的条件(<> 、!>、 !< 、not exists、not In 、not Like)是不可优化的。
  ·通配符开始的条件是不能使用索引
  ·使用了表达式的条件不能使用索引
  ·where条件中包含了函数,需要表扫描
  ·SQL Expert是个不错的SARG工具
3。关于索引
  ·在一对多的联系中多的一方的外键(如orderdetial中的orderid)建立聚集索引
  ·复合索引中列顺序很关键,把经常检索的列放置在第一个位置
  ·如果表中有聚集索引,那所有的非聚集索引都是包含了聚集索引列的复合索引
  ·不要对只包含少数几个索引值的列设置为索引列,因此bit类型的列不适合做索引列
  ·使用索引优化向导参考进行索引优化
文章来源:http://www.nbman.cn/default.asp?id=98
posted @ 2008-11-22 22:36 束居 阅读(9) 评论(0) 编辑
针对css背景png,实施如下。
程序代码 程序代码
background-image: url(绝对路径/你的图.png)!important;/* FF IE7 */
background-repeat: no-repeat;
_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='绝对路径/你的图.png'); /* IE6 */
_background-image: none; /* IE6 */

说明:
Firefox、Opera、IE7 等完全支持 PNG 透明图片的浏览器,而 IE6 不能很好识别,所有我们可以通过这来定义Firefox、Opera、IE7 等浏览器中 PNG 图片的样式。如下:
#png {background: url(绝对路径/images/bg.png) repeat;}

而对于 IE6,我们都通过滤镜的方法来定义。我们通过只有 IE6 才识别的下划线(_),来定义 IE6 浏览器中的滤镜。如下:
#png {
_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true', sizinMethod='scale', xsrc="绝对路径/images/bg.png");
_background:none;
}

这样综合起来的最后的解决方法就是:
#png {
background: url(绝对路径/images/bg.png) repeat;
_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true', sizingMethod='scale', xsrc="绝对路径/images/bg.png");
_background:none;
}

绝对路径/你的图.png=就是你PNG图片的网址
如:http://www.koray.cn/images/topimg.gif

JS版
程序代码 程序代码
<script language="JavaScript">
function correctPNG()
     {
     for(var i=0; i<document.images.length; i++)
        {
     var img = document.images[i]
     var imgName = img.src.toUpperCase()
     if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
        {
     var imgID = (img.id) ? "id='" + img.id + "' " : ""
     var imgClass = (img.className) ? "class='" + img.className + "' " : ""
     var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
     var imgStyle = "display:inline-block;" + img.style.cssText
     if (img.align == "left") imgStyle = "float:left;" + imgStyle
     if (img.align == "right") imgStyle = "float:right;" + imgStyle
     if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
     var strNewHTML = "<span " + imgID + imgClass + imgTitle
     + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
        + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
     + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>"
     img.outerHTML = strNewHTML
     i = i-1
        }
        }
     }
window.attachEvent("onload", correctPNG);
</script>

文章来源:http://www.nbman.cn/default.asp?id=100
posted @ 2008-11-22 22:36 束居 阅读(1008) 评论(0) 编辑
程序代码 程序代码
Create PROCEDURE PageList

@tblName   varchar(255),       -- 表名

@strGetFields varchar(1000) = '*',   -- 需要返回的列

@fldName varchar(255)='',       -- 排序的字段名

@PageSize   int = 10,           -- 页尺寸

@PageIndex   int = 1,           -- 页码

@doCount   bit = 0,   -- 返回记录总数, 非 0 值则返回

@OrderType bit = 0,   -- 设置排序类型, 非 0 值则降序

@strWhere   varchar(1500) = ''   -- 查询条件 (注意: 不要加 where)

AS

declare @strSQL   varchar(5000)       -- 主语句

declare @strTmp   varchar(110)         -- 临时变量

declare @strOrder varchar(400)         -- 排序类型



if @doCount != 0

   begin

     if @strWhere !=''

     set @strSQL = "select count(*) as Total from [" + @tblName + "] where "+@strWhere

     else

     set @strSQL = "select count(*) as Total from [" + @tblName + "]"

end  

--以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况

else

begin



if @OrderType != 0

begin

     set @strTmp = "<(select min"

set @strOrder = " order by [" + @fldName +"] desc"

--如果@OrderType不是0,就执行降序,这句很重要!

end

else

begin

     set @strTmp = ">(select max"

     set @strOrder = " order by [" + @fldName +"] asc"

end



if @PageIndex = 1

begin

     if @strWhere != ''  

     set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ "   from [" + @tblName + "] where " + @strWhere + " " + @strOrder

     else

     set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ "   from ["+ @tblName + "] "+ @strOrder

--如果是第一页就执行以上代码,这样会加快执行速度

end

else

begin

--以下代码赋予了@strSQL以真正执行的SQL代码

set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ "   from ["

     + @tblName + "] where [" + @fldName + "]" + @strTmp + "(["+ @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["+ @fldName + "] from [" + @tblName + "]" + @strOrder + ") as tblTmp)"+ @strOrder



if @strWhere != ''

     set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ "   from ["

         + @tblName + "] where [" + @fldName + "]" + @strTmp + "(["

         + @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["

         + @fldName + "] from [" + @tblName + "] where " + @strWhere + " "

         + @strOrder + ") as tblTmp) and " + @strWhere + " " + @strOrder

end

end  

exec (@strSQL)
--print @strSQL
GO

文章来源:http://www.nbman.cn/default.asp?id=101
posted @ 2008-11-22 22:36 束居 阅读(30) 评论(0) 编辑
一、sql2000分步式分区视图,SQL 2005方法同样,只是将其优化性能
--ServerA
Use study
go
--创建测试表
Create table customers (
  Customerid  varchar(5) not null,
  CompanyName varchar(50) not null,
  ContactName  varchar(30) null,
--建立约束,及关键字
CONSTRAINT PK_customers PRIMARY KEY CLUSTERED  (Customerid),
CONSTRAINT   CK_customerid   CHECK (Customerid  between 'AAAAA'  and  'LZZZZ')
)

--select * from customers
--Server B
use study
go
Create table customers (
  Customerid  varchar(5) not null,
  CompanyName varchar(50) not null,
  ContactName  varchar(30) null,
CONSTRAINT PK_customers PRIMARY KEY CLUSTERED  (Customerid),
CONSTRAINT   CK_customerid   CHECK (Customerid  between 'M'  and  'ZZZZZ')
)
go
--ServerA
--在serverA服务器上远程连接数据库服务器B
exec  sp_addlinkedserver    
       @server='DPVSERVER1', @srvproduct='',
       @provider='SQLOLEDB', @datasrc='ServerB'
go
exec  sp_addlinkedsrvlogin
@rmtsrvname =  'DPVSERVER1'
     , @useself =  'false'
     , @rmtuser =  'sa'
     , @rmtpassword = 'password'
go
--测试是服务器B否可以连接上
select top 10 * from DPVSERVER1.[study].dbo.customers
--ServerB
--在serverB服务器上远程连接数据库服务器A
exec  sp_addlinkedserver    
       @server='DPVSERVER2', @srvproduct='',
       @provider='SQLOLEDB', @datasrc='ServerA'
exec  sp_addlinkedsrvlogin
@rmtsrvname =  'DPVSERVER2'
     , @useself =  'false'
     , @rmtuser =  'sa'
     , @rmtpassword = 'password'
go
--测试是服务器A否可以连接上
select top 10 * from DPVSERVER2.[study].dbo.customers

--确定是否检查远程表的架构。如果为 ture,则在查询开始时跳过远程表的架构检查,可以优化查询。
--ServerA
Exec sp_serveroption 'GLOBE01', 'lazy schema validation', 'true'
--Sever B
Exec sp_serveroption 'SO', 'lazy schema validation', 'true'

--创建分步式视图
--Server A:
  Create view DPV_Customers  As
   Select *  from Customers
   Union all
   Select *  from  [192.168.42.37].study.dbo.Customers
--Server B
   Create view DPV_Customers  As
   Select *  from  DPVSERVER2.Pubs.dbo.Customers
   UNION ALL
   Select *  from Customers

--select * from DPV_Customers

set xact_abort on--这个不能少。。是必须要,因为是远程连接
/*
当 SET XACT_ABORT 为 ON 时,如果执行 Transact-SQL 语句产生运行时错误,则整个事务将终止并回滚。
当 SET XACT_ABORT 为 OFF 时,有时只回滚产生错误的 Transact-SQL 语句,而事务将继续进行处理。
如果错误很严重,那么即使 SET XACT_ABORT 为 OFF,也可能回滚整个事务。
编译错误(如语法错误)不受 SET XACT_ABORT 的影响。
*/
Insert INTO DPV_CUSTOMERS VALUES('AAMAY','FUZHOU COMPANY','MARRY')
Insert INTO DPV_CUSTOMERS VALUES('CJOHN','XIMEN COMPANY','MARRY')
Insert INTO DPV_CUSTOMERS VALUES('SMITH','SHANGHAI COMPANY','TOM')
Insert INTO DPV_CUSTOMERS VALUES('YOUNG','FUJIAN COMPANY','JANE')
Insert INTO DPV_CUSTOMERS VALUES('GTOPP','BEJING COMPANY','TOM')
Insert INTO DPV_CUSTOMERS VALUES('QUILH','BEJING COMPANY','TOM')

--可以通过查询计划知道它是如何运行及访问
--访问远程视图所有操作服务器
Select  *  FROM  DPV_Customers  order  by  customerid
--通过约束访问符合其约束上的表,在此只访问Server B ,因为它符合其约束
Select  *  FROM  DPV_Customers  Where  CustomerID= 'QUILH'
--通过约束访问符合其约束上的表,在此只访问Server A ,因为它符合其约束
Select  *  FROM  DPV_Customers  Where  CustomerID= 'AAMAY'

=================================================================================

二、sql2005分区表
--添加文件组
alter database Study add filegroup [fg1]
go
alter database Study add filegroup [fg2]
go
alter database Study add filegroup [fg3]
go
--在各自文件组中添加数据各自存储文件ndf,并放到不同的盘里
alter database Study
add file
(name='fg1',
filename='c:\fg1.ndf',
size=5mb)
to filegroup [fg1]
go
alter database Study
add file
(name='fg2',
filename='d:\fg2.ndf',
size=5mb)
to filegroup [fg2]
go
alter database Study
add file
(name='fg3',
filename='e:\fg3.ndf',
size=5mb)
to filegroup [fg3]
go
use Study
go
--创建分区函数,水平左分区
Create partition function emailPF(nvarchar(50))
as range right for values ('G','N')
go
--在文件组fg1,fg2,fg3上创建分区架构
Create partition scheme emailPS
as partition emailPF to (fg1,fg2,fg3)
go
--在分区架构上创建表
Create table customermail (custid int, email nvarchar(50)) on emailPS(email)
go
--测试效率
insert into customermail(custid,email)
select 1,'A'
union all select 2,'AA' union all select 3,'B' union all select 2,'BB'
union all select 3,'CC' union all select 5,'C' union all select 44,'DD'
union all select 23,'D' union all select 5,'EE' union all select 121,'FF'
union all select 12,'G' union all select 2,'H' union all select 33,'I'
union all select 121,'J' union all select 5,'K' union all select 5,'KK'
union all select 11,'L' union all select 5,'M' union all select 22,'N'
union all select 5,'O' union all select 5,'W' union all select 5,'Q'
union all select 5,'W' union all select 5,'R' union all select 5,'S'
union all select 5,'W' union all select 5,'T' union all select 5,'U'
union all select 5,'W' union all select 5,'T' union all select 5,'V'
union all select 5,'W' union all select 5,'T' union all select 5,'x'
union all select 5,'T' union all select 5,'y' union all select 5,'T'
union all select 5,'z'
--查询执行计划用到了分区查询
select * from customermail Where email<'F'
select * from customermail Where custid=5 and email<'F'
select * from customermail Where email <'H'
select * from customermail Where email between 'H' and 'K'
select * from customermail Where email<'W'

来源:Hopewell_Go的专栏
文章来源:http://www.nbman.cn/default.asp?id=104
posted @ 2008-11-22 22:36 束居 阅读(147) 评论(0) 编辑
Create function fun_getPY(@str nvarchar(4000))
returns nvarchar(4000)
as
begin
declare @word nchar(1),@PY nvarchar(4000)
set @PY=''
while len(@str)>0
begin
set @word=left(@str,1)
--如果非汉字字符,返回原字符
set @PY=@PY+(case when unicode(@word) between 19968 and 19968+20901
then (
select top 1 PY
from
(
select 'A' as PY,N'驁' as word
union all select 'B',N'簿'
union all select 'C',N'錯'
union all select 'D',N'鵽'
union all select 'E',N'樲'
union all select 'F',N'鰒'
union all select 'G',N'腂'
union all select 'H',N'夻'
union all select 'J',N'攈'
union all select 'K',N'穒'
union all select 'L',N'鱳'
union all select 'M',N'旀'
union all select 'N',N'桛'
union all select 'O',N'漚'
union all select 'P',N'曝'
union all select 'Q',N'囕'
union all select 'R',N'鶸'
union all select 'S',N'蜶'
union all select 'T',N'籜'
union all select 'W',N'鶩'
union all select 'X',N'鑂'
union all select 'Y',N'韻'
union all select 'Z',N'咗'
) T
where word>=@word collate Chinese_PRC_CS_AS_KS_WS
order by PY ASC
)
else @word
end)
set @str=right(@str,len(@str)-1)
end
return @PY
end

文章来源:http://www.nbman.cn/default.asp?id=105
posted @ 2008-11-22 22:36 束居 阅读(63) 评论(0) 编辑
SQL Server

ODBC
标准连接
Driver={SQL Server};Server=myServerAddress; Database=myDataBase;Uid=myUsername;Pwd=myPassword;

受信的连接
Driver={SQL Server};Server=myServerAddress; Database=myDataBase;Trusted_Connection=Yes;

指定帐号和密码
oConn.Properties("Prompt") = adPromptAlways Driver={SQL Server}; Server=myServerAddress;Database=myDataBase;

OLE DB, OleDbConnection (.NET)
标准连接
Provider=sqloledb;Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;

受信的连接
Provider=sqloledb;Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;使用serverName\instanceName作为数据源可以指定SQL Server实例。

连接到一个SQL Server的实例
指定服务器实例的表达式和其他SQL Server的连接字符串相同。
Provider=sqloledb; Data Source=myServerName\theInstanceName; Initial Catalog=myDataBase;Integrated Security=SSPI;

指定帐户和密码
oConn.Provider = "sqloledb" oConn.Properties("Prompt") = adPromptAlways Data Source=myServerAddress;Initial Catalog=myDataBase;

使用IP地址的连接
Provider=sqloledb;Data Source=190.190.200.100,1433; Network Library=DBMSSOCN;Initial Catalog=myDataBase; User ID=myUsername; Password=myPassword;

SqlConnection (.NET)
标准连接
Data Source=myServerAddress;Initial Catalog=myDataBase; User Id=myUsername;Password=myPassword;

Standard Security alternative syntax
Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;


受信任的连接
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;

Trusted Connection alternative syntax
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;


连接到SQL Server实例
指定服务器实例的表达式和其他SQL Server的连接字符串相同。
Server=myServerName\theInstanceName;Database=myDataBase; Trusted_Connection=True;

仅能用于CE设备。
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;User ID=myDomain\myUsername;Password=myPassword;

带有IP地址的连接
Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=myDataBase; User ID=myUsername;Password=myPassword;

指定包的大小
Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword; Trusted_Connection=False;Packet Size=4096;默认的包大小为8192字节。

Data Shape
MS Data Shape
Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=myServerAddress; Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;


SQL Server 2005

SQL Native Client ODBC Driver
标准安全连接
Driver={SQL Native Client};Server=myServerAddress; Database=myDataBase;Uid=myUsername;Pwd=myPassword;

受信的连接
Driver={SQL Native Client}; Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;
"Integrated Security=SSPI" 与 "Trusted_Connection=yes" 是相同的。

连接到一个SQL Server实例
指定服务器实例的表达式和其他SQL Server的连接字符串相同。
Driver={SQL Native Client};Server=myServerName\theInstanceName;Database=myDataBase; Trusted_Connection=yes;

指定用户名和密码
oConn.Properties("Prompt") = adPromptAlways Driver={SQL Native Client}; Server=myServerAddress;Database=myDataBase;

使用MARS (multiple active result sets)
Driver={SQL Native Client};Server=myServerAddress;Database=myDataBase; Trusted_Connection=yes;MARS_Connection=yes;
"MultipleActiveResultSets=true"与MARS_Connection=yes"是相同的。
使用ADO.NET 2.0作为MARS的模块。 MARS不支持ADO.NET 1.0和ADO.NET 1.1。

验证网络数据
Driver={SQL Native Client}; Server=myServerAddress;Database=myDataBase; Trusted_Connection=yes;Encrypt=yes;

使用附加本地数据库文件的方式连接到本地SQL Server Express实例
Driver={SQL Native Client};Server=.\SQLExpress; AttachDbFilename=c:\asd\qwe\mydbfile.mdf; Database=dbname;Trusted_Connection=Yes; 为何要使用Database参数?如果同名的数据库已经被附加,那么SQL Server将不会重新附加。

使用附加本地数据文件夹中的数据库文件的方式连接到本地SQL Server Express实例
Driver={SQL Native Client};Server=.\SQLExpress; AttachDbFilename=|DataDirectory|mydbfile.mdf; Database=dbname; Trusted_Connection=Yes;为何要使用Database参数?如果同名的数据库已经被附加,那么SQL Server将不会重新附加。

数据库镜像
Data Source=myServerAddress; Failover Partner=myMirrorServer;Initial Catalog=myDataBase;Integrated Security=True;

SQL Native Client OLE DB Provider
标准连接
Provider=SQLNCLI;Server=myServerAddress; Database=myDataBase;Uid=myUsername;Pwd=myPassword;

受信的连接
Provider=SQLNCLI;Server=myServerAddress; Database=myDataBase;Trusted_Connection=yes;

连接到SQL Server实例
指定服务器实例的表达式和其他SQL Server的连接字符串相同。
Provider=SQLNCLI;Server=myServerName\theInstanceName; Database=myDataBase;Trusted_Connection=yes;

使用帐号和密码
oConn.Properties("Prompt") = adPromptAlways oConn.Open "Provider=SQLNCLI;Server=myServerAddress;DataBase=myDataBase;

使用MARS (multiple active result sets)
Provider=SQLNCLI; Server=myServerAddress; Database=myDataBase; Trusted_Connection=yes; MarsConn=yes;
"MultipleActiveResultSets=true"和"MARS_Connection=yes"是相同的。
使用ADO.NET 2.0作为MARS的模块。 MARS不支持ADO.NET 1.0和ADO.NET 1.1。

验证网络数据
Provider=SQLNCLI;Server=myServerAddress; Database=myDataBase;Trusted_Connection=yes;Encrypt=yes;


使用附加本地数据库文件的方式连接到本地SQL Server Express实例

Provider=SQLNCLI;Server=.\SQLExpress;AttachDbFilename=c:\asd\qwe\mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;

使用附加本地数据文件夹中的数据库文件的方式连接到本地SQL Server Express实例

Provider=SQLNCLI;Server=.\SQLExpress; AttachDbFilename=|DataDirectory|mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;

数据库镜像
Data Source=myServerAddress;Failover Partner=myMirrorServer; Initial Catalog=myDataBase;Integrated Security=True;

SqlConnection (.NET)
标准连接
Data Source=myServerAddress; Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;

Standard Security alternative syntax
Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;

受信任的连接
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;

Trusted Connection alternative syntax
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;

连接到一个SQL Server的实例
指定服务器实例的表达式和其他SQL Server的连接字符串相同。
Server=myServerName\theInstanceName;Database=myDataBase;Trusted_Connection=True;

来自WinCE设备的安全连接
Data Source=myServerAddress; Initial Catalog=myDataBase; Integrated Security=SSPI;User ID=myDomain\myUsername;Password=myPassword;仅能用于CE设备。

带有IP地址的连接
Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;

使用MARS (multiple active result sets)
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True; MultipleActiveResultSets=true;使用ADO.NET 2.0作为MARS的模块。 MARS不支持ADO.NET 1.0和ADO.NET 1.1。

使用附加本地数据库文件的方式连接到本地SQL Server Express实例
Server=.\SQLExpress;AttachDbFilename=c:\asd\qwe\mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;

使用附加本地数据文件夹中的数据库文件的方式连接到本地SQL Server Express实例
Server=.\SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;

使用在SQL Server Express实例上的用户实例
Data Source=.\SQLExpress;Integrated Security=true;AttachDbFilename=|DataDirectory|\mydb.mdf;User Instance=true;

数据库镜像
Data Source=myServerAddress;Failover Partner=myMirrorServer;Initial Catalog=myDataBase;Integrated Security=True;

Asynchronous processing
Server=myServerAddress; Database=myDataBase; Integrated Security=True; Asynchronous Processing=True;

MySQL

MyODBC
MyODBC 2.50 本地数据库
Driver={mySQL};Server=localhost;Option=16834;Database=myDataBase;

MyODBC 2.50 远程数据库
Driver={mySQL}; Server=myServerAddress;Port=3306; Option=131072;Stmt=; Database=myDataBase; Uid=myUsername; Pwd=myPassword;

MyODBC 3.51 本地数据库
Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=myDataBase; User=myUsername;Password=myPassword;Option=3;

MyODBC 3.51 远程数据库
Driver={MySQL ODBC 3.51 Driver};Server=data.domain.com;Port=3306; Database=myDataBase; User=myUsername; Password=myPassword;Option=3;

OLE DB, OleDbConnection (.NET)
标准
Provider=MySQLProv; Data Source=mydb; User Id=myUsername; Password=myPassword;

Connector/Net 1.0 (.NET)
标准
Server=myServerAddress; Database=myDataBase; Uid=myUsername;Pwd=myPassword;
默认端口号是3306

指定端口号
Server=myServerAddress; Port=1234;Database=myDataBase; Uid=myUsername; Pwd=myPassword;

命名管道
Server=myServerAddress; Port=-1;Database=myDataBase; Uid=myUsername;Pwd=myPassword;
如果端口是-1,意思是告诉驱动程序使用命名管道网络协议来连接数据库。

MySqlConnection (.NET)
eInfoDesigns.dbProvider
Data Source=myServerAddress; Database=myDataBase;User ID=myUsername; Password=myPassword; Command Logging=false;

SevenObjects MySqlClient (.NET)
标准
Host=myServerAddress; UserName=myUsername; Password=myPassword; Database=myDataBase;

Core Labs MySQLDirect (.NET)
标准
User ID=root;Password=myPassword;Host=localhost;Port=3306;Database=myDataBase; Direct=true;Protocol=TCP;Compress=false;Pooling=true;Min Pool Size=0;Max Pool Size=100;Connection Lifetime=0;

MySQLDriverCS (.NET)
标准
Location=myServerAddress; Data Source=myDataBase; UserID=myUsername; Password=myPassword; Port=3306;Extended Properties="""";


Oracle

ODBC
新版本
Driver={Microsoft ODBC for oracle}; Server=myServerAddress; Uid=myUsername;Pwd=myPassword;

旧版本
Driver={Microsoft ODBC Driver for oracle}; ConnectString=OracleServer.world; Uid=myUsername; Pwd=myPassword;

OLE DB, OleDbConnection (.NET)
标准连接
此连接字符串适用了微软的驱动。
Provider=msdaora;Data Source=MyOracleDB; User Id=myUsername; Password=myPassword;

受信连接
Provider=msdaora; Data Source=MyOracleDB; Persist Security Info=False; Integrated Security=Yes;

标准连接
由Oracle提供的驱动。
Provider=OraOLEDB. oracle;Data Source=MyOracleDB; User Id=myUsername; Password=myPassword;

受信连接
Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;OSAuthent=1;

oracle.DataAccess.Client.OracleConnection
标准
Data Source=TORCL;User Id=myUsername; Password=myPassword;

标准安全连接
Data Source=TORCL;Integrated Security=SSPI;

使用ODP.NET而不使用tnsnames.ora
Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost) (PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID))); User Id=myUsername;Password=myPassword;

oracleConnection, oracle Data Provider, ODP.NET.
System.Data.OracleClient.OracleConnection.
标准
用于8i RC3及以后的版本
Data Source=MyOracleDB;Integrated Security=yes;

指定用户名和密码
用于8i RC3及以后的版本
Data Source=MyOracleDB; User Id=myUsername; Password=myPassword; Integrated Security=no;

忽略tnsnames.ora
另一种不需要使用DSN的连接方式
SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost) (PORT=MyPort))(CONNECT_DATA=(SERVICE_NAME=MyOracleSID))); uid=myUsername;pwd=myPassword;

使用上面的连接字符串可能会导致Visual Studio报告错误。
如果您在使用中出现了这些问题,请使用下面的这种连接方式。
Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort)) (CONNECT_DATA=(SERVICE_NAME=MyOracleSID))); User Id=myUsername; Password=myPassword;

使用连接池
如果连接池服务程序找不到已经存在的连接池,它将根据连接字符串创建一个新的池。
否则将循环使用池中已存在的连接。
Data Source=myOracleDB; User Id=myUsername; Password=myPassword;Min Pool Size=10;Connection Lifetime=120; Connection Timeout=60;Incr Pool Size=5;Decr Pool Size=2;

Windows身份验证
Data Source=myOracleDB;User Id=/;

特权连接
使用SYSDBA
Data Source=myOracleDB;User Id=SYS;Password=SYS; DBA Privilege=SYSDBA;

特权连接
使用SYSOPER
Data Source=myOracleDB;User Id=SYS;Password=SYS;DBA Privilege=SYSOPER;

密码过期处理过程
当使用一个连接字符串连接数据库后,出现"密码已过期"的错误时。
请执行OpenWithNewPassword命令来提供新密码。
Data Source=myOracleDB;User Id=myUsername;Password=myPassword; oConn.OpenWithNewPassword(sTheNewPassword);

Proxy验证
Data Source=myOracleDB; User Id=myUsername; Password=myPassword;Proxy User Id=pUserId; Proxy Password=pPassword;

Core Labs oraDirect (.NET)
Standard
User ID=myUsername; Password=myPassword; Host=ora;Pooling=true; Min Pool Size=0;Max Pool Size=100;Connection Lifetime=0;

Data Shape
MS Data Shape
Provider=MSDataShape.1;Persist Security Info=False;Data Provider=MSDAORA; Data Source=orac;User Id=myUsername; Password=myPassword;


IBM .Net Data Provider

您需要使用 IBM.Data.DB2.iSeries 命名空间
DataSource=myServerAddress;UserID=myUsername; Password=myPassword;DataCompression=True;

OLE DB, OleDbConnection (.NET)
IBM Client Access OLE DB 适配器
Provider=IBMDA400;Data Source=MY_SYSTEM_NAME;User Id=myUsername; Password=myPassword;
MY_SYSTEM_NAME是在OperationsNavigator中的系统连接名称。

IBM Client Access OLE DB 适配器
Provider=IBMDA400;Data Source=MY_SYSTEM_NAME;User Id=myUsername; Password=myPassword;Default Collection=MY_LIBRARY;
MY_SYSTEM_NAME是系统连接的名称,MY_LIBRARY是iSeries Navigator中library的名称。

ODBC
IBM Client Access ODBC 驱动
Driver={Client Access ODBC Driver (32-bit)};System=my_system_name; Uid=myUsername; Pwd=myPassword;

IBM iSeries Access ODBC 驱动
这个驱动需要比IBM Client Access ODBC的驱动更新。
Driver={iSeries Access ODBC Driver};System=my_system_name; Uid=myUsername; Pwd=myPassword;


Caché

ODBC
标准
DRIVER={InterSystems ODBC};SERVER=myServerAddress; DATABASE=myDataBase; UID=myUsername;PWD=myPassword;

特定端口
DRIVER={InterSystems ODBC};SERVER=myServerAddress;PORT=12345; DATABASE=myDataBase; UID=myUsername;PWD=myPassword;

特定协议
DRIVER={InterSystems ODBC};SERVER=myServerAddress;PORT=12345; DATABASE=myDataBase; PROTOCOL=TCP;STATIC CURSORS=1;UID=myUsername;PWD=myPassword;


IBM DB2

OLE DB, OleDbConnection (.NET)
TCP/IP
Provider=DB2OLEDB;Network Transport Library=TCPIP;Network Address=XXX.XXX.XXX.XXX; Initial Catalog=MyCtlg;Package Collection=MyPkgCol;Default Schema=Schema;User ID=myUsername; Password=myPassword;

APPC
Provider=DB2OLEDB;APPC Local LU Alias=MyAlias;APPC Remote LU Alias=MyRemote; Initial Catalog=MyCtlg;Package Collection=MyPkgCol; Default Schema=Schema;User ID=myUsername;Password=myPassword;

IBM提供的OLE DB适配器
TCP/IP
Provider=IBMDADB2;Database=myDataBase; Hostname=myServerAddress; Protocol=TCPIP;Port=50000; Uid=myUsername;Pwd=myPassword;

ODBC
标准
Driver={IBM DB2 ODBC DRIVER}; Database=myDataBase;Hostname=myServerAddress; Port=1234;Protocol=TCPIP;Uid=myUsername;Pwd=myPassword;


Firebird

ODBC - IBPhoenix Open Source
标准
Driver=Firebird/InterBase(r) driver;Uid=SYSDBA; Pwd=masterkey; DbName=D:\FIREBIRD\examples\TEST.FDB;

.NET - Firebird .Net Data Provider
标准
User=SYSDBA;Password=masterkey;Database=SampleDatabase.fdb; DataSource=localhost;Port=3050;Dialect=3; Charset=NONE;Role=; Connection lifetime=15;Pooling=true;MinPoolSize=0;MaxPoolSize=50;Packet Size=8192;ServerType=0;


Informix

ODBC
Informix 3.30
Dsn=;Driver={INFORMIX 3.30 32 BIT};Host=hostname;Server=myServerAddress; Service=service-name; Protocol=olsoctcp; Database=myDataBase;Uid=myUsername;Pwd=myPassword;

Informix-CLI 2.5:
Driver={Informix-CLI 2.5 (32 Bit)};Server=myServerAddress; Database=myDataBase; Uid=myUsername;Pwd=myPassword;

OLE DB
IBM Informix OLE DB Provider
Provider=Ifxoledbc.2;Password=myPassword; User ID=myUsername; Data Source=dbName@serverName;Persist Security Info=true;

IBM Informix .NET Provider
IBM.Data.Informix.IfxConnection(命名空间)
Database=myDataBase;Host=192.168.10.10; Server=db_engine_tcp; Service=1492; Protocol=onsoctcp;UID=myUsername;Password=myPassword;

Ingres

ODBC
DSN-less
Provider=MSDASQL.1;DRIVER=Ingres;SRVR=xxxxx;DB=xxxxx;Persist SecurityInfo=False;Uid=myUsername;Pwd=myPassword; SelectLOOPS=N; ExtendedProperties="SERVER=xxxxx;DATABASE=xxxxx;SERVERTYPE=INGRES";


Interbase

ODBC, Easysoft
本地计算机
Driver={Easysoft IB6 ODBC}; Server=localhost ;Database=localhost:C:\mydatabase.gdb; Uid=myUsername; Pwd=myPassword;

远程计算机
Driver={Easysoft IB6 ODBC}; Server=myServerAddress; Database=ComputerName: C:\mydatabase.gdb; Uid=myUsername;Pwd=myPassword;

ODBC, Intersolv
本地计算机
Driver={INTERSOLV InterBase ODBC Driver (*.gdb)}; Server=localhost; Database=localhost: C:\mydatabase.gdb; Uid=myUsername; Pwd=myPassword;

远程计算机
Driver={INTERSOLV InterBase ODBC Driver (*.gdb)}; Server=myServerAddress; Database=ComputerName: C:\mydatabase.gdb;Uid=myUsername; Pwd=myPassword;

OLE DB, SIBPROvider
标准
provider=sibprovider;location=localhost:;data source=c:\databases\gdbs\mygdb.gdb; user id=SYSDBA; Password=masterkey;

版本 2.x
Provider=SIBPROvider.2; Data Source=localhost:c:\databases\gdbs\mygdb.gdb; Persist Security Info=False;

指定字符集
provider=sibprovider;location=localhost:;data source=c:\databases\gdbs\mygdb.gdb; user id=SYSDBA; Password=masterkey; character set=ISO8859_1;

指定角色
provider=sibprovider;location=localhost:; data source=c:\databases\gdbs\mygdb.gdb;user id=SYSDBA; Password=masterkey; role=DIGITADORES;


Lightbase

标准连接
标准
User=myUsername;Password=myPassword;UDB=USERBASE;Server=myServerAddress;

Paradox

ODBC
5.X
Driver={Microsoft Paradox Driver (*.db )}; DriverID=538;Fil=Paradox 5.X; DefaultDir=c:\pathToDb\;Dbq=c:\pathToDb\;CollatingSequence=ASCII;

7.X
Provider=MSDASQL.1;Persist Security Info=False; Mode=Read;Extended Properties=DSN=Paradox; DBQ=C:\myDb;DefaultDir=C:\myDb;DriverId=538; FIL=Paradox 7.X; MaxBufferSize=2048;PageTimeout=600;;Initial Catalog=C:\myDb;
请注意:以上的方法仅能从数据库获取数据。

Intersolv 3.11 ODBC Driver
7.X
DSN=MyDSN;AUT=1;CT=7;DQ=0;FOC=0;IS=1; PW=myPassword;USF=1;ULQ=1;

并不是所有参数都是必填的。大多数参数都能够在DSN中进行设置。
Parameters definition
AUT - ApplicationUsingThreads
CT - CreateType
DB - Database
DSN - DataSourceName
DQ - DeferQueryEvaluation
FOC - FileOpenCache
IS - IntlSort
ND - NetDir
PW - Passwords
USF - UltraSafeCommit
ULQ - UseLongQualifiers

OleDbConnection (.NET)
标准
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\myDb;Extended Properties=Paradox 5.x;
注意:您仅需要指定数据库存放的地址而无需指定数据库的名称。

SQLBase

OLE DB
标准
Provider=SQLBaseOLEDB;Data source=myServerAddress; Location=myDataBase; User Id=myUsername; Password=myPassword;

SQLBase .NET Data Provider
标准SQLBase连接
DataSource=myServerAddress; UserId=myUsername; Password=myPassword;Poolsize=5;Connection Lifetime=60;
"Poolsize" 表示多少SQLBase连接被打开,不论它们是否被立即使用。默认值是5。
"Connection Lifetime" 表示连接存在多长时间(单位:秒)。默认是60秒。

文章来源:http://www.nbman.cn/default.asp?id=106
posted @ 2008-11-22 22:36 束居 阅读(454) 评论(0) 编辑