Unix Sybase isql赢得';使用DB GO时不执行sql文件

Unix Sybase isql赢得';使用DB GO时不执行sql文件,unix,sybase,isql,udeploy,Unix,Sybase,Isql,Udeploy,我在uDeploy上创建这个进程,它使用iSQL执行sql文件。我的问题是,我必须在这个过程中设置服务器和数据库名称 在SQL文件中-我们可能需要使用其他数据库,因此必须在文件中包含use DBNAME GO 但是,它没有在USE语句之后到达/执行update语句 是否有任何与sybase、isql相关的东西不允许这样做? 您只能从isql执行一条语句吗 正在运行的典型linux cmd是 sybase.sh; isql -U username -P **** -S servername:por

我在uDeploy上创建这个进程,它使用iSQL执行sql文件。我的问题是,我必须在这个过程中设置服务器和数据库名称

在SQL文件中-我们可能需要使用其他数据库,因此必须在文件中包含use DBNAME GO

但是,它没有在USE语句之后到达/执行update语句

是否有任何与sybase、isql相关的东西不允许这样做? 您只能从isql执行一条语句吗

正在运行的典型linux cmd是

sybase.sh; isql -U username -P **** -S servername:port -D dbname -X -i sqlfile.sql
SQL文件示例:

USE dbname
go
update table set field = 'date' where field1 ='blahblah' and field2 ='blah'
go
编辑:

这可能是因为命令中正在设置DBNAME。有人能证实吗?

一些背景:

从命令行:

isql -U ... -P ... -D >dbname< -i >script<
  • 由于在
    isql
    命令行上没有提供
    -D
    参数,因此在运行
    select
现在,如果我们添加一个
-D
标志

$ isql -S ... -U ... -P ... -D master -i myquery.sql
  • isql
    命令行选项
    -D master
    将首先将会话放置在
    master
    数据库中
  • 脚本将通过将您置于
    tempdb
    数据库中来覆盖这一点
  • 最终结果是
    select
    将在
    tempdb
    数据库中运行

一个表有列,而不是字段。好吧-错误的单词,但这不会添加到解决方案中。无论如何,这是因为在命令probs中设置了hte dbname,没有看到任何人试图在该命令中更改db,因此无法确定。如果您使用一些示例数据库名称更新示例,将会有所帮助;同样,
dbname
=
dbname
,因此这两个示例都应该在名为
dbname
的数据库中运行查询。。。假设您的登录名可以访问名为
dbname
的数据库;我假设你有不同名称的数据库。。。在这种情况下,我已经解释了一个可能的问题(请参见下面的答案),如果isql/-D>dbname<和use>dbname<是相同的,那会怎么样?没关系<首先应用代码>isql/-D,然后应用
使用
(即,
使用
覆盖
isql/-D
$ myquery.sql
use tempdb
go
select count(*) from sysobjects
go

$ isql -S ... -U ... -P ... -i myquery.sql
$ isql -S ... -U ... -P ... -D master -i myquery.sql