Ⅰ 一段sql语句,批处理 每段的意思
可利用sql server 2000下的isql完成,下面举两个例子:
1、本地
isql -H. -E -Q "select count(1) from sysobjects"
这个是查询本地SQL Server中系统对象的个数,查询完成后会给出结果,不会停留有isql环境中。
2、远程
isql -S ipaddress -U userid -P userpassword -Q "select count(1) from sysobjects"
这个可实现远程机器上的统计,也不会停留在isql环境中,请自己根据需要编写。
希望能帮助到你,如果需要提取的isql文件,因为只有sql server 2000有这东西,2005版本以上的都是没有的,哈哈,再发一个问题吧。
Ⅱ 如何用SQL生成SQL批处理文件
您好:
SQL> set heading off --禁止输出列标题
SQL> set feedback off --禁止显示最后一行的计数反馈信息
列出当前用户下所有同义词的定义,可用来测试同义词的真实存在性
select 'desc '||tname from tab where tabtype='SYNONYM';
查询当前用户下所有表的记录数
select 'select '''||tname||''',count(*) from '||tname||';' from tab where tabtype='TABLE';
把所有符合条件的表的select权限授予为public
select 'grant select on '||table_name||' to public;' from user_tables where 《条件》;
删除用户下各种对象
select 'drop '||tabtype||' '||tname from tab;
删除符合条件用户
select 'drop user '||username||' cascade;' from all_users where user_id>25;
快速编译所有视图
----当在把数据库倒入到新的服务器上后(数据库重建),需要将视图重新编译一遍,
----因为该表空间视图到其它表空间的表的连接会出现问题,可以利用PL/SQL的语言特性,快速编译。
SQL> SPOOL ON.SQL
SQL> SELECT'ALTER VIEW '||TNAME||' COMPILE;' FROM TAB;
SQL> SPOOL OFF
然后执行ON.SQL即可。
SQL> @ON.SQL
当然,授权和创建同义词也可以快速进行,如:
SQL> SELECT 'GRANT SELECT ON '||TNAME||' TO 用户名;' FROM TAB;
SQL> SELECT 'CREATE SYNONYM '||TNAME||' FOR 用户名.'||TNAME||';' FROM TAB;
Ⅲ T-SQL中批处理有什么作用
定义:批处理是T-SQL语句集合的逻辑单元
特点:(1)在批处理的所有语句被整合成一个执行计划,一个批处理内的所有语句要么被放在一起通过解析,要么没有一句能够执行。
(2)多个批处理:每一个批处理都会被独立执行,每个批处理的错误不会阻止其它批处理的运行。
用途: 批处理有多种用途,但常被用在某些事情不得不放在前面发生,或者不得不和其它事情分开的脚本中。
GO是一个批处理结束的标识,比如有这么写语句CREATE......... INSERT....... UPDATE...... GO
如果你不加这个GO,那T-SQL是一条一条顺序执行的,如果加了GO,这几条语句就构成一个批处理块。
Ⅳ 如何使用sqlcmd在批处理脚本中执行SQL
使用sqlcmd可以在批处理脚本中执行SQL。虽然这个命令的参数很多,但幸运的是,我们不需要全部理解,在这里简要介绍以下几个:
{ -U login_id [ -P password ] } | –E trusted connection }] 如果指定了-E就不需要指定用户名密码,当然指定了用户名密码就不用-E了;
-S server_name [ \ instance_name ] 数据库服务器,如果不在本机的话必须指定;
-d db_name 数据库名字,必须的;
[ -i input_file ] [ -o output_file ] sql存在文件里的话用-i,输出到文件用-o;
[ -q "cmdline query" ] [ -Q "cmdline query" and exit ] 输入是简单的sql,不用文件,推荐用-Q,如果你执行完sqlcmd还需要执行别的动作的话;
[ -W remove trailing spaces ] 删除多余的空格,结果会更紧凑。
当我们在真正的脚本中执行sql时,通常需要传入和输出变量。
传入变量比较简单,如下所示:
sqlcmd -d test -Q "select * from dbo.Investment where investor=$(x)" -v x='IBM' -W
这个语句从test数据库的Investment表中选出investor等于x的所有行,注意到变量x被包含在${}中。
然后用-v定义了x的值,'IBM'。
-W确定输出的结果不包含多余的空格。
x的值如果没有在sqlcmd中设定,系统会试图从别的地方去寻找,可能的地方包括,系统环境变量,用户环境变量,以及用在sqlcmd之前用set设定的变量值。
如果你的数据里确实包含${},那么你并不希望进行变量的替换,使用-x选项可以禁止变量的替换。
有些时候,你还希望能获得sql执行结果并保存到变量中。比如你们的日志系统每天都在产生日志文件,你要执行一个脚本来处理这些日志文件并存到数据库中。在处理之前,你必须读取数据库以确定上次处理到那一天了。你期望这样能解决你的问题:
sqlcmd -d test -Q "select ${x}=max(date) from dbo.logDates " -W
但这样并不工作。因为sqlcmd并不提供输出变量。
不过你可以这样做:
sqlcmd -d test -Q "declare @x nvarchar(8);select @x=max(date) from dbo.logDates;print @x; " -W
这样你就可以得到一个干干净净的数字,而不会包含列名和其他信息。
接着你将上述结果导入到一个文件里:
sqlcmd -d test -Q "declare @x nvarchar(8);select @x=max(date) from dbo.logDates;print @x; " -W 1.txt
现在到了最关键的一步,将文件的内容写入到变量里:
set /P myvar=<1.txt
/p表明这个变量myvar的值需要用户输入;
<1.txt表明从1.txt中读入而不是从其他地方读入。
这样,我们就巧妙的把sql执行的结果写入到变量里了。
Ⅳ 在SQL数据库中,什么叫批处理
可以理解成一次处理很多的数据。比如说,我一次往一个表中插入10000条数据,这就是批处理。
Ⅵ SQL中 何为批处理如何标识多个批处理
所谓
批处理
就是,多个
SQL语句
分批处理,一般用go来分开多个SQL语句
例如
create
database
n
go
create
table
b
(...)
go
Ⅶ SQL批处理语句是什么
不是的,这个在这里一两句讲不清楚的,您需要专门学习一下P/L SQL的知识,可以说是一种依托于数据库实现的脚本语言,最大的用途就是写数据库函数和存储过程。
Ⅷ 用批处理执行SQL文件的脚本应该怎么写
步骤:(1) 创建一个批处理文件:打开记事本,创建数据库连接信息(例如,server name,username,password,databasename等)以及要执行的*.sql脚本名称。具体语法参考下文"osql 实用工具" 。 将文件的扩展名改为.bat 并保存。
示例1:指定待执行sql 文件的相对路径
osql -S admin\admin -U sa -P sa -d TestDB -i c:\test.sql
pause
示例2: 待执行文件与bat文件在同一个目录,指定相对路径
set localdir=%~dp0
osql -S (local) -U sa -P sa -d Test -i %localdir%\test1.sql
osql -S (local) -U sa -P sa -d Test -i %localdir%\test2.sql
osql -S (local) -U sa -P sa -d Test -i %localdir%\test3.sql
pause
(2) 创建需要执行的sql 脚本, test.sql,test2.sql 和test3.sql, 并放在步骤(1)示例1中指定的位置。本例为c:\ 根目录。如果用示例2,将待执行的sql和bat文件放在同一个目录下。
(3) 双击*.bat 文件并查看运行结果。
Ⅸ sql中的批处理
SQL批处理:指包含一条或多条T - SQL语句的语句组,这组语句从应用程序一次性地发送到SQL server服务器执行。编批处理程序时,最好能够以分号结束相关语句。虽然这不数据库强制求,但笔还强烈建议如此处理。方面这有利于提批处理程序读性。批处理程序往往完成些比较复杂成套功能,而每条语句则完成项独立功能。此有时个比较复杂些批处理程序其往往有百行容。此时提其读性,最好能够利分号进行语句语句间分隔。二未版本性。其实SQL Server数据库设计时候,开始这方面就关不严。现部分标准程序编器都实现类似强制控制。根据宪梓微软官方提供资料看,以SQL Server数据库版本,这个规则能成个强执行规则,即必须每条语句面利分号进行分隔。此能够跟续SQL Server数据库版本进行,最好从现开始就采分号分隔批处理程序每条语句。