本文将带您了解关于SQLServer中符号@@的含义的新内容,同时我们还将为您解释sql中&符号的相关知识,另外,我们还将为您提供关于mssqlserver中BULKINSERT大批量导入数据SQLS
本文将带您了解关于SQL Server中符号@@的含义的新内容,同时我们还将为您解释sql中&符号的相关知识,另外,我们还将为您提供关于mssqlserver中BULK INSERT大批量导入数据 SQL SERVER、sql server 中的 SET NOCOUNT ON 的含义、SQL server 数据库中dbo的含义、SQL Server中Linked Server及Remote Server的使用示例的实用信息。
本文目录一览:- SQL Server中符号@@的含义(sql中&符号)
- mssqlserver中BULK INSERT大批量导入数据 SQL SERVER
- sql server 中的 SET NOCOUNT ON 的含义
- SQL server 数据库中dbo的含义
- SQL Server中Linked Server及Remote Server的使用示例
SQL Server中符号@@的含义(sql中&符号)
@@
SQL Server中符号的含义是什么?
mssqlserver中BULK INSERT大批量导入数据 SQL SERVER
本文章简单的介绍了关于mssqlserver中BULK INSERT大批量导入数据 SQL SERVER ,有需要学习的同学可以测试一下。
开门见山,直接以例子介绍:
代码如下 | 复制代码 |
CREATE TABLE [dbo].[course]( |
导入数据:
将下面的数据存储为文本文件或SQL文件
2,李刚,语文,89;3,李刚,数学,79;3,李刚,英语,69;4,李刚,化学,89
导入语句:
代码如下 | 复制代码 |
BULK INSERT dbo.course |
sql server 中的 SET NOCOUNT ON 的含义
每次我们在使用查询分析器调试 SQL 语句的时候,通常会看到一些信息,提醒我们当前有多少个行受到了影响,这是些什么信息?在我们调用的时候这些信息有用吗?是否可以关闭呢?
答案是这些信息在我们的客户端的应用程序中是没有用的,这些信息是存储过程中的每个语句的 DONE_IN_PROC 信息。
我们可以利用 SET NOCOUNT 来控制这些信息,以达到提高程序性能的目的。
MSDN 中帮助如下:
SET NOCOUNT
使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。
语法
SET NOCOUNT { ON | OFF }
注释
当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。
即使当 SET NOCOUNT 为 ON 时,也更新 @@ROWCOUNT 函数。
当 SET NOCOUNT 为 ON 时,将不给客户端发送存储过程中的每个语句的 DONE_IN_PROC 信息。当使用 Microsoft SQL Server 提供的实用工具执行查询时,在 Transact-SQL 语句(如 SELECT、INSERT、 UPDATE 和 DELETE)结束时将不会在查询结果中显示 "nn rows affected"。
如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。
SET NOCOUNT 设置是在执行或运行时设置,而不是在分析时设置。
权限
SET NOCOUNT 权限默认授予所有用户。
结论:我们应该在存储过程的头部加上 SET NOCOUNT ON 这样的话,在退出存储过程的时候加上 SET NOCOUNT OFF 这样的话,以达到优化存储过程的目的。
还有一种说法:
前台一般是一个返回就当一个结果集, 不管这个返回是结果集, 还是操作的反馈信息.
为了保证前台得到的只是真实的记录集, 而不是反馈信息, 因此得使用 set nocount on
多说两句:
1:在查看 SqlServer 的帮助的时候,要注意 “权限” 这一节,因为某些语句是需要一定的权限的,而我们往往忽略。
2:@@ROWCOUNT 是返回受上一语句影响的行数,包括找到记录的数目、删除的行数、更新的记录数等,不要认为只是返回查找的记录数目,而且 @@ROWCOUNT 要紧跟需要判断语句,否则 @@ROWCOUNT 将返回 0。
SQL server 数据库中dbo的含义
- question
SELECT * FROM [database].[dbo].[t_1] where xh not (SELECTxh FROM [database1].[dbo].[t_1])
- df.
dbo是:每个数据库的默认用户,具有所有者权限,全称:datebaseOwner ,即DbOwner 。
所有者:在数据库中,新建对象时,默认对象的所有者为当前登录的账号。如果通过用dbo作为所有者来定义对象,能够使数据库中的任何用户引用而不必提供所有者名称;否则可能查不到表,存储过程等。
- ex.
你以User1登录进去并建表Table,而未指定dbo, 当用户User2登进去想访问Table时就得知道这个Table是你User1建立的,要写上User1.Table,如果他不知道是你建的,则访问会有问题。 如果你建表时把所有者指给了dbo,则别的用户进来时写上Dbo.Table就行了,不必知道User1。
不光表是如此,视图等数据库对象建立时也要如此才算是好。 所以在创建对象时,指定所有者为dbo,任何一个用户都可以引用。
建表、存储过程、视图等数据库对象时,其对应的所有者是创建它的用户。则除了该用户其他登录用户要引用这些东东时,都要加上前缀,很是麻烦。而且,程序因此易出错,你查来查去问题确出在这,浪费你时间。
SQL Server中Linked Server及Remote Server的使用示例
设置SERVER:
一、在Client Network Utility中添加目标服务器的联接
二、打开ENTERPRISE manger,展开源服务器的Security,在Remote ServerS上单击右键,单击弹出菜单中的NEW Remote Server
三、在Remote Server PROPERTIES窗口中,输入Server Name,选中RPC,REMOTE LOGIN MAPPING可以用默认值,然后单击确定
四、同样的方法设置目标服务器
使用
对于Remote Server 上的表和过程用一般的过程和表的使用方法即可,不过在表和过程名前要加上SERVER NAME
例
---- 来自jb51.cc
select * from remoteserver.databasename.dbo.tablename
exec remoteserver.databasename..sp_test @cs1,@cs2,@cs3 output
在两台同样装有NT4+SP5,MSsql7+SP1的服务器上测试成功。
Remote Server,虽说使用起来很方便,但是只能在MSsql之间使用,如果要将sql7同sql 6.5联接应该怎么?或者用sql7同ORACLE或SYSBASE联接应该怎么办呢?这就需要用到Linked Server。
今天先说一下sql7之间使用Linked Server的方法:
一、在源服务器的Client Network Utility中添加目标服务器的联接
二、打开ENTERPRISE manger,展开源服务器的Security,在Linked ServerS上单击右键,单击弹出菜单中的NEW Linked Server
三、在Linked Server PROPERTIES窗口中,在Linked Server框输入目标服务器名(在CLIENT NETWORK UTILITY中的服务器名),在SERVER部分选中sql Server,在SERVER OPTIONS中根据选中RPC和RPC OUT
四、切换到安全(Security),根据实际设置。(我一般选择“They WILL BE MAPPED TO”,然后输入帐号和口令)
五、单击确定完成设置
需要说明的是,在使用时同Remote Server有点不同,用Remote Server可以省略CATALOG(DBO),但使用Linked Server时却不能省略,当时我在试时就因为这个问题耽误了不少时间。
以上在WIN98+sql7 DESKTOP同NT4+SP5+sql7之间测试成功
曾因工作的原因,在别人的督促之下,试了sql 7同ORACLE联接,在sql7中直接访问ORACLE的数据库方法,下面将该方法简单说一下。
当时用的是Linked Server直接联接对方数据库。
一、先在sql服务器装上ORACLE的客户端,并设置好
二、然后打开ENTERPRISE manger,与昨天相同的方法进到添加Linked Server窗口
三、在Linked Server框输入要使用的服务器名,服务器名允许按命名规则任意命名,但不能与已有的Remote Server或Linked Server重名。
四、在SERVER区选中“OTHER DATA SOURCE”
五、Provider name选择“Microsoft OLE DB Provider for Oracle”
六、在Product name处输入“Oracle”
七、在Data source处输入在Oracle客户端程序中设置的服务器名
八、在Provider处输入“MSDAORA” 注:用ORACLE就是这个,不能改
九、在Server opentions区选择“RPC”和“RPC OUT”
十、再切换到安全(Security),根据实际设置。(我都是选择“They WILL BE MAPPED TO”,然后输入帐号和口令)
十一、单击确定完成设置
我按这个步骤设置成功,但因时间和条件的问题,一直没再继续试其它的设置,如果各位那位有这样的条件的话,请再试一下其它的选项,看有什么不同,试完希望能将步骤和结果给我发一份。
另需说明的是,这种的联接的稳定性还是可以的,在设好以后的一年中,只因为对方服务器出问题重设了一次,还有一次是ORACLE的客户端被管理员不小心删了个文件,又重设了一次,然后一直没出问题,并且速度也还可以,一个过程,在ORACLE客户端执行需要0.1秒钟,通过Linked Server执行需要0.2秒钟左右。
明天给大家写一下上面同样的设置用sql7的系统过程设置的方法。
以上在UNIX+ORACLE7和NT4+SP5+sql7上测试成功。
关于SQL Server中符号@@的含义和sql中&符号的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于mssqlserver中BULK INSERT大批量导入数据 SQL SERVER、sql server 中的 SET NOCOUNT ON 的含义、SQL server 数据库中dbo的含义、SQL Server中Linked Server及Remote Server的使用示例的相关知识,请在本站寻找。
本文标签: