




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SQL code通过触发器实现数据库的即时同步 -即时同步两个表的实例: -测试环境:SQL2000,远程主机名:xz,用户名:sa,密码:无,数据库名:test-创建测试表,不能用标识列做主键,因为不能进行正常更新-在本机上创建测试表,远程主机上也要做同样的建表操作,只是不写触发器if exists (select * from dbo.sysobjects where id = object_id(Ntest) and OBJECTPROPERTY(id, NIsUserTable) = 1)drop table testcreate table test(id int not null constraint PK_test primary key ,name varchar(10)go-创建同步的触发器create trigger t_test on testfor insert,update,deleteasset XACT_ABORT on-启动远程服务器的MSDTC服务exec master.xp_cmdshell isql /Sxz /Usa /P /qexec master.xp_cmdshell net start msdtc,no_output,no_output-启动本机的MSDTC服务exec master.xp_cmdshell net start msdtc,no_output-进行分布事务处理,如果表用标识列做主键,用下面的方法BEGIN DISTRIBUTED TRANSACTIONdelete from openrowset(sqloledb,xz;sa;,test.dbo.test) where id in(select id from deleted)insert into openrowset(sqloledb,xz;sa;,test.dbo.test) select * from insertedcommit trango-插入数据测试insert into testselect 1,aaunion all select 2,bbunion all select 3,cunion all select 4,ddunion all select 5,abunion all select 6,bcunion all select 7,ddd-删除数据测试delete from test where id in(1,4,6)-更新数据测试update test set name=name+_123 where id in(3,5)-显示测试的结果select * from test a full joinopenrowset(sqloledb,xz;sa;,test.dbo.test) b on a.id=b.idSQLSERVER 本地查询更新操作远程数据库的代码 复制代码代码如下: -PK select * from sys.key_constraints where object_id = OBJECT_ID(TB) -FK select * from sys.foreign_keys where parent_object_id =OBJECT_ID(TB) -创建链接服务器 exec sp_addlinkedserver ITSV , , SQLOLEDB , 远程服务器名或ip地址 exec sp_addlinkedsrvlogin ITSV , false ,null, 用户名 , 密码 -查询示例 select * from ITSV.数据库名.dbo.表名 -导入示例 select * into 表 from ITSV.数据库名.dbo.表名 -以后不再使用时删除链接服务器 exec sp_dropserver ITSV , droplogins -连接远程/局域网数据(openrowset/openquery/opendatasource) -1、openrowset -查询示例 select * from openrowset( SQLOLEDB , sql服务器名 ; 用户名 ; 密码 ,数据库名.dbo.表名) -生成本地表 select * into 表 from openrowset( SQLOLEDB , sql服务器名 ; 用户名 ; 密码 ,数据库名.dbo.表名) -把本地表导入远程表 insert openrowset( SQLOLEDB , sql服务器名 ; 用户名 ; 密码 ,数据库名.dbo.表名) select *from 本地表 -更新本地表 update b set b.列A=a.列A from openrowset( SQLOLEDB , sql服务器名 ; 用户名 ; 密码 ,数据库名.dbo.表名)as a inner join 本地表 b on a.column1=b.column1 -openquery用法需要创建一个连接 -首先创建一个连接创建链接服务器 exec sp_addlinkedserver ITSV , , SQLOLEDB , 远程服务器名或ip地址 -查询 select * FROM openquery(ITSV, SELECT * FROM 数据库.dbo.表名 ) -把本地表导入远程表 insert openquery(ITSV, SELECT * FROM 数据库.dbo.表名 ) select * from 本地表 -更新本地表 update b set b.列B=a.列B FROM openquery(ITSV, SELECT * FROM 数据库.dbo.表名 ) as a inner join 本地表 b on a.列A=b.列A -3、opendatasource/openrowset SELECT * FROM opendatasource( SQLOLEDB , Data Source=ip/ServerName;User ID=登陆名;Password=密码 ).test.dbo.roy_taSQL不同服务器数据库之间的数据操作整理(完整版)-1.创建链接服务器-1.1创建一个链接名EXECsp_addlinkedserverLinkName,SQLOLEDB,远程服务器名或ip地址-有自定义实例名还要加上/实例名/*例如:EXEC sp_addlinkedserver TonyLink,SQLOLEDB,192.168.58.208 */-1.2创建登录信息(或叫创建链接服务器登录名映射)(只需选择一种方式)-1.2.1以windows认证的方式登录EXECsp_addlinkedsrvloginLinkName-或EXEC sp_addlinkedsrvlogin LinkName,true/*例如:EXEC sp_addlinkedsrvlogin TonyLink*/-1.2.2以SQL认证的方式登录EXECsp_addlinkedsrvloginLinkName,false,NULL,用户名,密码/*例如:EXEC sp_addlinkedsrvlogin TonyLink,false,null,sa,123 */-2.链接服务器相关数据操作-2.1查询示例SELECT*FROMLinkName.数据库名.架构名.表名/*例如:SELECT * FROM TonyLink.Mydb.dbo.tb */-2.2导入示例SELECT*INTO表名FROMLinkName.数据库名.架构名.表名/*例如:SELECT * INTO Newtb FROM TonyLink.Mydb.dbo.tb */-2.3更新示例UPDATELinkName.数据库名.架构名.表名SET字段=值WHERE字段=条件/*例如:UPDATE TonyLink.Mydb.dbo.tb SET Persons=g WHERE Persons=a */-2.4删除示例DELETELinkName.数据库名.架构名.表名WHERE字段名=条件/*例如:DELETE TonyLink.Mydb.dbo.tb WHERE Persons=g */-3.通过行集函数(OPENQUERY/OPENROWSET/OPENDATASOURCE)操作方法-3.1 OPENQUERY方法(需要借助刚创建的链接服务器):-3.1.1查询示例SELECT*FROMOPENQUERY(LinkName,SELECT * FROM数据库名.架构名.表名)/*例如:SELECT * FROM OPENQUERY(TonyLink,SELECT * FROM Mydb.dbo.tb)*/-3.1.2导入示例-3.1.2.1导入所有列INSERTOPENQUERY(LinkName,SELECT *FROM数据库名.架构名.表名)SELECT*FROM本地表/*例如:INSERT OPENQUERY(TonyLink,SELECT *FROM Mydb.dbo.tb) SELECT * FROM tb */-3.1.2.2导入指定列INSERTOPENQUERY(LinkName,SELECT *FROM数据库名.架构名.表名)(列,列.)SELECT列,列.FROM本地表/*例如:INSERT OPENQUERY(TonyLink,SELECT *FROM Mydb.dbo.tb)(RANGE,LEVEL,Persons)SELECT RANGE,LEVEL,Persons FROM tb*/-3.1.3更新示例UPDATEOPENQUERY(LinkName,SELECT * FROM数据库名.架构名.表名)SET字段=值WHERE字段=条件/*例如:UPDATE OPENQUERY(TonyLink, SELECT * FROM Mydb.dbo.tb)SET Persons=g WHERE Persons=a */-3.1.4删除示例DELETEOPENQUERY(LinkName,SELECT * FROM数据库名.架构名.表名)WHERE字段名=条件/*例如:DELETE OPENQUERY(TonyLink, SELECT * FROM Mydb.dbo.tb)WHERE Persons=g */-3.2 OPENROWSET方法(不需要用到创建好的链接名。如果连接的实例名不是默认的,需要在sql服务器名或IP地址后加上/实例名)-3.2.1查询示例-3.2.1.1 Windows认证方式查询(以下方法之一即可)SELECT*FROMOPENROWSET(SQLOLEDB,server=sql服务器名或IP地址;Trusted_Connection=yes,数据库名.架构名.表名)SELECT*FROMOPENROWSET(SQLNCLI,server=sql服务器名或IP地址;Trusted_Connection=yes,数据库名.架构名.表名)SELECT*FROMOPENROWSET(SQLOLEDB,server=sql服务器名或IP地址;Trusted_Connection=yes,SELECT * FROM数据库名.架构名.表名)SELECT*FROMOPENROWSET(SQLNCLI,server=sql服务器名或IP地址;Trusted_Connection=yes,SELECT * FROM数据库名.架构名.表名)/*例如:SELECT * FROM OPENROWSET(SQLOLEDB,Server=192.168.58.208;Trusted_Connection=yes,Mydb.dbo.tb)或:SELECT * FROM OPENROWSET(SQLNCLI,Server=192.168.58.208;Trusted_Connection=yes,Mydb.dbo.tb)或:SELECT * FROM OPENROWSET(SQLOLEDB,Server=192.168.58.208;Trusted_Connection=yes,SELECT * FROM Mydb.dbo.tb)或:SELECT * FROM OPENROWSET(SQLNCLI,Server=192.168.58.208;Trusted_Connection=yes,SELECT * FROM Mydb.dbo.tb)*/-3.2.1.2 SQL认证方式查询(以下方法之一即可)SELECT*FROMOPENROWSET(SQLOLEDB,server=sql服务器名或IP地址;uid=用户名;pwd=密码,数据库名.架构名.表名)SELECT*FROMOPENROWSET(SQLNCLI,server=sql服务器名或IP地址;uid=用户名;pwd=密码,数据库名.架构名.表名)SELECT*FROMOPENROWSET(SQLOLEDB,server=sql服务器名或IP地址;uid=用户名;pwd=密码,SELECT * FROM数据库名.架构名.表名)SELECT*FROMOPENROWSET(SQLNCLI,server=sql服务器名或IP地址;uid=用户名;pwd=密码,SELECT * FROM数据库名.架构名.表名)SELECT*FROMOPENROWSET(SQLOLEDB,sql服务器名;用户名;密码,数据库名.架构名.表名)SELECT*FROMOPENROWSET(SQLNCLI,sql服务器名;用户名;密码,数据库名.架构名.表名)SELECT*FROMOPENROWSET(SQLOLEDB,sql服务器名;用户名;密码,SELECT * FROM数据库名.架构名.表名)SELECT*FROMOPENROWSET(SQLNCLI,sql服务器名;用户名;密码,SELECT * FROM数据库名.架构名.表名)/*例如:SELECT * FROM OPENROWSET(SQLOLEDB,server=192.168.58.208;uid=sa;pwd=123,mydb.dbo.tb)或:SELECT * FROM OPENROWSET(SQLNCLI,server=192.168.58.208;uid=sa;pwd=123,mydb.dbo.tb)或:SELECT * FROM OPENROWSET(SQLOLEDB,server=192.168.58.208;uid=sa;pwd=123,SELECT * FROM Mydb.dbo.tb)或:SELECT * FROM OPENROWSET(SQLNCLI,server=192.168.58.208;uid=sa;pwd=123,SELECT * FROM Mydb.dbo.tb)或:SELECT * FROM OPENROWSET(SQLOLEDB,192.168.58.208;sa;123,mydb.dbo.tb)或:SELECT * FROM OPENROWSET(SQLNCLI,192.168.58.208;sa;123,mydb.dbo.tb)或:SELECT * FROM OPENROWSET(SQLOLEDB,192.168.58.208;sa;123,SELECT * FROM Mydb.dbo.tb)或:SELECT * FROM OPENROWSET(SQLNCLI,192.168.58.208;sa;123,SELECT * FROM Mydb.dbo.tb)*/-3.2.2导入示例-3.2.2.1导入所有列INSERTOPENROWSET(SQLOLEDB,server=sql服务器名或IP地址;uid=用户名;pwd=密码,数据库名.架构名.表名)SELECT*FROM本地表/*例如:INSERT OPENROWSET(SQLOLEDB,server=192.168.58.208;uid=sa;pwd=123,mydb.dbo.tb)SELECT * FROM tb*/-3.2.2.2导入指定列INSERTOPENROWSET(SQLOLEDB,server=sql服务器名或IP地址;uid=用户名;pwd=密码,数据库名.架构名.表名)(列,列.)SELECT列,列.FROM本地表/*例如:INSERT OPENROWSET(SQLOLEDB,server=192.168.58.208;uid=sa;pwd=123,mydb.dbo.tb)(RANGE,LEVEL,Persons)SELECT RANGE,LEVEL,Persons FROM tb*/-注:更多替代方法参考.2.1查询示例,只需替换行集函数(OPENROWSET)内的内容即可。-3.2.3更新示例UPDATEOPENROWSET(SQLOLEDB,server=sql服务器名或IP地址;uid=用户名;pwd=密码,数据库名.架构名.表名)SET字段=值WHERE字段=条件/*例如:UPDATE OPENROWSET(SQLOLEDB,server=192.168.58.208;uid=sa;pwd=123,mydb.dbo.tb)SET Persons=gWHERE Persons=a*/-注:更多替代方法参考.2.1查询示例,只需替换行集函数(OPENROWSET)内的内容即可。-3.2.4删除示例DELETEOPENROWSET(SQLOLEDB,server=sql服务器名或IP地址;uid=用户名;pwd=密码,数据库名.架构名.表名)WHERE字段名=条件/*例如:DELETE OPENROWSET(SQLOLEDB,server=192.168.58.208;uid=sa;pwd=123,mydb.dbo.tb)WHERE Persons=g*/-注:更多替代方法参考.2.1查询示例,只需替换行集函数(OPENROWSET)内的内容即可。-3.3 OPENDATASOURCE方法(不需要用到创建好的链接名。如果连接的实例名不是默认的,需要在sql服务器名或IP地址后加上/实例名)-3.3.1查询示例-3.3.1.1 Windows认证方式查询(以下方法之一即可)SELECT*FROMOPENDATASOURCE(SQLOLEDB,server=sql服务器名或IP地址;Trusted_Connection=yes).数据库名.架构名.表名SELECT*FROMOPENDATASOURCE(SQLNCLI,server=sql服务器名或IP地址;Trusted_Connection=yes).数据库名.架构名.表名/*例如:SELECT * FROM OPENDATASOURCE(SQLOLEDB,Server=192.168.58.208;Trusted_Connection=yes).Mydb.dbo.tb或:SELECT * FROM OPENDATASOURCE(SQLNCLI,Server=192.168.58.208;Trusted_Connection=yes).Mydb.dbo.tb*/-3.3.1.2 SQL认证方式查询(以下方法之一即可)SELECT*FROMOPENDATASOURCE(SQLOLEDB,server=sql服务器名或IP地址;uid=用户名;pwd=密码).数据库名.架构名.表名SELECT*FROMOPENDATASOURCE(SQLNCLI,server=sql服务器名或IP地址;uid=用户名;pwd=密码).数据库名.架构名.表名SELECT*FROMOPENDATASOURCE(SQLOLEDB,Data Source=sql服务器名或IP地址;uid=用户名;pwd=密码).数据库名.架构名.表名SELECT*FROMOPENDATASOURCE(SQLNCLI,Data Source=sql服务器名或IP地址;uid=用户名;pwd=密码).数据库名.架构名.表名/*例如:SELECT * FROM OPENDATASOURCE(SQLOLEDB,Server=192.168.58.208;uid=sa;pwd=123).mydb.dbo.tb或:SELECT * FROM OPENDATASOURCE(SQLNCLI,Server=192.168.58.208;uid=sa;pwd=123).mydb.dbo.tb或:SELECT * FROM OPENDATASOURCE(SQLOLEDB,Data Source=192.168.58.208;uid=sa;pwd=123).mydb.dbo.tb或:SELECT * FROM OPENDATASOURCE(SQLNCLI,Data source=192.168.58.208;uid=sa;pwd=123).mydb.dbo.tb*/-3.3.2导入示例-3.3.2.1导入所有列INSERTOPENDATASOURCE(SQLOLEDB,server=sql服务器名或IP地址;uid=用户名;pwd=密码).数据库名.架构名.表名SELECT*FROM本地表/*例如:INSERT OPENDATASOURCE(SQLOLEDB,server=192.168.58.208;uid=sa;pwd=123).mydb.dbo.tbSELECT * FROM tb*/-3.3.2.2导入指定列INSERTOPENDATASOURCE(SQLOLEDB,server=sql服务器名或IP地址;uid=用户名;pwd=密码).数据库名.架构名.表名(列,列.)SELECT列,列.FROM本地表/*例如:INSERT OPENDATASOURCE(SQLOLEDB,server=192.168.58.208;uid=sa;pwd=123).mydb.dbo.tb(RANGE,LEVEL,Persons)SELECT RANGE,LEVEL,Persons FROM tb*/-注:更多替代方法参考.3.1查询示例,只需替换行集函数(OPENDATASOURCE)内的内容即可。-3.3.3更新示例UPDATEOPENDATASOURCE(SQLOLEDB,server=sql服务器名或IP地址;uid=用户名;pwd=密码).数据库名.架构名.表名SET字段=值WHERE字段=条件/*例如:UPDATE OPENDATASOURCE(SQLOLEDB,server=192.168.58.208;uid=sa;pwd=123).mydb.dbo.tbSET Persons=gWHERE Persons=a*/-注:更多替代方法参考.3.1查询示例,只需替换行集函数(OPENDATASOURCE)内的内容即可。-3.3.4删除示例DELETEOPENDATASOURCE(SQLOLEDB,server=sql服务器名或IP地址;uid=用户名;pwd=密码).数据库名.架构名.表名WHERE字段名=条件/*例如:DELETE OPENDATASOURCE(SQLOLEDB,server=192.168.58.208;uid=sa;pwd=123).mydb.dbo.tbWHERE Persons=g*/-注:更多替代方法参考.3.1查询示例,只需替换行集函数(OPENDATASOURCE)内的内容即可。-4.删除链接服务器方法-如果以后不再使用时可删除链接信息-4.1删除登录信息(或叫删除链接服务器登录名映射)EXECsp_droplinkedsrvloginLinkName,NULL/*例如:EXEC sp_droplinkedsrvlogin TonyLink,NULL*/-4.2删除链接服务器名称EXECsp_dropserverLinkName,droplogins-如果指定droplogins,则在删除链接服务器之前要删除登录名映射/*例如:EXEC sp_dropserver TonyLink,droplogins */-附:获取Provider Name的方法(EXEC master.xp_enum_oledb_providers)SELECTCAST(Provider NameASVARCHAR(30)ProviderName,CAST(Provider DescriptionASVARCHAR(60)ProviderDescriptionFROMOPENROWSET(SQLOLEDB,Server=.;Trusted_Connection=yes,SET FMTONLY OFF;EXEC master.xp_enum_oledb_providers)/*ProviderNameProviderDescription- -SQLOLEDBMicrosoft OLE DB Provider for SQL ServerDTSPackageDSOMicrosoft OLE DB Provider for DTS PackagesSQLReplication.OLEDBSQL Server Replication OLE DB Provider for DTSMSOLAPMicrosoft OLE DB Provider for Analysis Services 10.0MSDMineMicrosoft OLE DB Provider For Data Mining ServicesMicrosoft.ACE.OLEDB.12.0Microsoft Office 12.0 Access Database Engine OLE DB ProviderADsDSOObjectOLE DB Provider for Microsoft Directory ServicesSQLNCLI10SQL Server Native Client 10.0MSDAIPP.DSOMicrosoft OLE DB Provider for Internet PublishingMSDASQLMicrosoft OLE DB Provider for ODBC DriversMicrosoft.Jet.OLEDB.4.0Microsoft Jet 4.0 OLE DB ProviderMSDAOSPMicrosoft OLE DB Simple ProviderMSDAORAMicrosoft OLE DB Provider for OracleMSIDXSMicrosoft OLE DB Provider for Indexing Service(14行受影响)*/OpenRowSet相关帮助:- 包含访问 OLE DB 数据源中的远程数据所需的全部连接信息。当访问链接服务器中的表时,这种方法是一种替代方法,并且是一种使用 OLE DB 连接并访问远程数据的一次性的临时方法。对于较频繁引用 OLE DB 数据源的情况,请改为使用链接服务器。有关详细信息,请参阅 链接服务器。可以在查询的 FROM 子句中像引用表名那样引用 OPENROWSET 函数。依据 OLE DB 访问接口的功能,还可以将 OPENROWSET 函数引用为 INSERT、UPDATE 或 DELETE 语句的目标表。尽管查询可能返回多个结果集,但 OPENROWSET 只返回第一个结果集。 OPENROWSET 还通过内置的 BULK 访问接口支持大容量操作,正是有了该访问接口,才能从文件读取数据并将数据作为行集返回。Transact-SQL 语法约定语法OPENROWSET ( provider_name , datasource ; user_id ; password | provider_string , catalog. schema. object | query | BULK data_file , FORMATFILE = format_file_path |SINGLE_BLOB | SINGLE_CLOB | SINGLE_NCLOB ) := , CODEPAGE = ACP | OEM | RAW | code_page , ERRORFILE = file_name , FIRSTROW = first_row , LASTROW = last_row , MAXERRORS = maximum_errors , ROWS_PER_BATCH = rows_per_batch , ORDER ( column ASC | DESC ,.n ) UNIQUE 参数provider_name字符串,表示在注册表中指定的 OLE DB 访问接口的友好名称(或 PROGID)。provider_name没有默认值。datasource对应于特定 OLE DB 数据源的字符串常量。datasource是要传递给访问接口的IDBProperties接口的 DBPROP_INIT_DATASOURCE 属性,该属性用于初始化访问接口。通常,该字符串包含数据库文件的名称、数据库服务器的名称,或者访问接口能理解的用于定位数据库的名称。user_id字符串常量,它是传递给指定 OLE DB 访问接口的用户名。user_id为连接指定安全上下文,并作为 DBPROP_AUTH_USERID 属性传入以初始化访问接口。user_id不能是 Microsoft Windows 登录名称。password字符串常量,它是传递给 OLE DB 访问接口的用户密码。在初始化访问接口时,password作为 DBPROP_AUTH_PASSWORD 属性传入。password不能是 Microsoft Windows 密码。provider_string访问接口特定的连接字符串,作为 DBPROP_INIT_PROVIDERSTRING 属性传入以初始化 OLE DB 访问接口。通常provider_string封装初始化访问接口所需的所有连接信息。有关 SQL Server Native Client OLE DB 访问接口可识别的关键字列表,请参阅Initialization and Authorization Properties。catalog指定对象所在的目录或数据库的名称。schema架构的名称或指定对象的对象所有者名称。object对象名,它唯一地标识出将要操作的对象。query字符串常量,发送到访问接口并由访问接口执行。SQL Server 的本地实例不处理该查询,但处理由访问接口返回的查询结果(传递查询)。有些访问接口并不通过表名而是通过命令语言提供其表格格式数据,将传递查询用于这些访问接口是非常有用的。只要查询访问接口支持 OLE DBCommand对象及其强制接口,那么在远程服务器上就支持传递查询。有关详细信息,请参阅 SQL Server Native Client (OLE DB) Reference。BULK使用 OPENROWSET 的 BULK 行集访问接口读取文件中的数据。在 SQL Server 中,OPENROWSET 无需将数据文件中的数据加载到目标表,便可读取这些数据。这样便可在单个 SELECT 语句中使用 OPENROWSET。BULK 选项的参数可对何时开始和结束数据读取、如何处理错误以及如何解释数据提供有效控制。例如,可以指定以类型为varbinary、varchar或nvarchar的单行单列行集的形式读取数据文件。默认行为详见随后的参数说明。有关如何使用 BULK 选项的信息,请参阅本主题后面部分的“备注”。有关 BULK 选项所需权限的信息,请参阅本主题后面的“权限”部分。注意:当用于以完整恢复模式导入数据时,OPENROWSET (BULK .) 不优化日志记录。有关为大容量导入准备数据的信息,请参阅准备用于大容量导出或大容量导入的数据。data_file数据文件的完整路径,该文件的数据将被复制到目标表中。FORMATFILE=format_file_path指定格式化文件的完整路径。SQL Server 支持两种格式化文件类型:XML 和非 XML。格式化文件对定义结果集中的列类型是必需的。唯一的例外情况是指定 SINGLE_CLOB、SINGLE_BLOB 或 SINGLE_NCLOB 时;在这种情况下,不需要格式化文件。有关格式化文件的信息,请参阅使用格式化文件大容量导入数据。指定 BULK 选项的一个或多个参数。CODEPAGE=ACP|OEM|RAW|code_page指定该数据文件中数据的代码页。仅当数据含有字符值大于 127 或小于 32 的char、varchar或text列时,CODEPAGE 才是适用的。注意:建议在格式化文件中为每个列指定一个排序规则名称。CODEPAGE 值说明ACP将数据类型为char、varchar或text的列由 ANSI/Microsoft Windows 代码页 (ISO 1252) 转换为 SQL Server 代码页。OEM(默认值)将数据类型为char、varchar或text的列由系统 OEM 代码页转换为 SQL Server 代码页。RAW不执行从一个代码页到另一个代码页的转换。这是执行最快的选项。code_page指示编码数据文件中的字符数据所在的源代码页;例如,850。该代码页对 SQL Server 数据库引擎正确解释输入数据是必需的。ERRORFILE=file_name指定用于收集格式有误且不能转换为 OLE DB 行集的行的文件。这些行将按原样从数据文件复制到此错误文件中。错误文件在开始执行命令时创建。如果该文件已存在,将引发一个错误。此外,还创建了一个扩展名为 .ERROR.txt 的控制文件。此文件引用错误文件中的每一行并提供错误诊断。纠正错误后即可加载数据。FIRSTROW=first_row指定要加载的第一行的行号。默认值为 1,指示指定数据文件的第一行。通过对行终止符进行计数来确定行号。LASTROW=last_row指定要加载的最后一行的行号。默认值为 0,指示指定数据文件中的最后一行。MAXERRORS=maximum_errors指定格式化文件中定义的、在 OPENROWSET 引发异常之前可以发生的语法错误或格式有误行的最大数目。在达到 MAXERRORS 之前,OPENROWSET 会忽略每个错误行,不加载它,并将其计为一个错误。maximum_errors的默认值为 10。注意:MAX_ERRORS 不适用于 CHECK 约束,也不适用于money和bigint数据类型的转换。ROWS_PER_BATCH=rows_per_batch指定数据文件中近似的数据行数量。该值应与实际行数相同。OPENROWSET 始终以单批形式导入数据文件。但如果将rows_per_batch的值指定为 0,则查询处理器在查询计划中分配资源时将使用rows_per_batch的值作为提示。默认情况下,ROWS_PER_BATCH 未知。指定 ROWS_PER_BATCH = 0 相当于忽略 ROWS_PER_BATCH。ORDER ( column ASC | DESC ,.n UNIQUE )一个用于指定数据文件中数据的排序方式的可选提示。默认情况下,大容量操作假定数据文件未排序。如果查询优化器能够利用指定顺序来生成更有效的查询计划,则性能可能会得到改善。指定一个排序可以取得益处的示例包括: 将行插入到具有聚集索引的表,其中行集数据按聚集索引键进行排序。 将行集与另一个表联接,其中排序列和联接列匹配。 通过排序列聚合行集数据。 将行集用作查询的 FROM 子句中的源表,其中排序列和联接列匹配。UNIQUE 指定数据文件不能有重复条目。如果数据文件中的实际行没有根据指定的顺序进行排序,或者如果指定了 UNIQUE 提示并且存在重复键,则返回错误。使用 ORDER 时列别名是必需的。列别名列表必须引用由 BULK 子句正在访问的派生表。在 ORDER 子句中指定的列名将引用此列别名列表。不能指定大值类型(var
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 融创秋招面试题及答案
- 药性基础知识考试试题及答案
- 风险管控试题及答案
- 戏曲化妆试题及答案
- 认识电阻试题及答案
- 黑农工考试试题及答案
- 针灸职称考试题库及答案
- 统计法考试试题及答案
- 铁路招聘面试题及答案
- 朗读听力测试题及答案
- 2025-2030应急响应和救援船(ERRV)行业市场现状供需分析及投资评估规划分析研究报告
- 2025年云南能投新能源产业园区投资开发有限公司招聘笔试参考题库含答案解析
- 科研助理合同协议书
- 《个人投资指南解析》课件
- 江苏省建筑安装工程施工技术操作规程
- 2025至2030中国血液透析行业运营趋势分析与经营策略风险报告
- 2025年初中语文八年级上册试讲稿(教师招聘面试)藤野先生
- 弱电行业公司简介
- 2025版离职合同范本
- 2025光大银行个人经营性贷款借款合同
- 人教版九年级下册数学教学计划(及进度表)
评论
0/150
提交评论