我正在使用SQL Advantage,需要知道SQL是什么来识别与表关联的触发器.我没有选择使用其他工具,所以老式的SQL解决方案是理想的答案.
我目前正在开始使用Sybase PowerDesigner及其物理数据模型(PDM).
我已经设法创建了一些实体/表,列等等,生成的SQL中的情况(从模型创建数据库)就像我想要的那样.
但是,关于数据库名称,PowerDesigner坚持要求它始终为大写.实际上,我没有得到任何错误消息或类似的东西,我实际上允许输入一个混合大小写的数据库名称,但只要我关闭"模型属性"窗口并返回它检查,数据库代码名称返回大写.
我显然没有取消将"逻辑名称"连接到代码名称的"="按钮,因此我可以键入不同的代码名称,但它仍然不起作用(对于表格而言).
有没有办法在生成的SQL脚本中使用与我在PowerDesigner中指定的大小写相对应的数据库名称?DBMS类型是SQL Server 2008(尝试过以前的版本,问题是相同的).
非常感谢提前.
我对表有一个简单的查询,它返回如下结果:
id id_type id_ref
2702 5 31
2702 16 14
2702 17 3
2702 40 1
2703 23 4
2703 23 5
2703 34 6
2704 1 14
Run Code Online (Sandbox Code Playgroud)
我想将结果合并为一行,例如:
id concatenation
2702 5,16,17,40:31,14,3,1
2703 23,23,34:4,5,6
2704 1:14
Run Code Online (Sandbox Code Playgroud)
有没有办法在触发器内执行此操作?
注意:我知道我可以使用光标,但我真的不愿意,除非没有更好的方法.
该数据库是Sybase 12.5.4版.
我正在尝试使用PHP5连接到Sybase数据库.我相信我已成功编译PHP PDO_DBLIB,作为PDO驱动程序下的phpinfo()列表dblib,并freetds作为pdo_dblib风格.
但是,当我尝试测试连接时,我收到错误消息:
'PDOException',消息'找不到驱动程序'
我正在尝试使用以下代码连接到LAN上的服务器:
$dbh = new PDO("sybase:host=192.168.1.xxx;dbname=[database-name]", '[user]', '[pass]');
Run Code Online (Sandbox Code Playgroud)
任何建议将不胜感激!
我想返回所有表格及其旁边的计数.什么是最快捷的方式?
我知道在Oracle中,您可以执行类似下面的操作,但不确定Sybase:
declare n number;
begin
for rec in (select object_name from user_objects where object_type='TABLE')
loop
execute immediate 'select count(*) from '||rec.object_name into n;
dbms_output.put_line (rec.object_name||':'||n);
end loop;
end;
Run Code Online (Sandbox Code Playgroud) SQLServer日期时间格式存储为8个字节,其中前四个字节是自1900年1月1日以来的天数,其他四个字节是自午夜以来的刻度数.滴答是第二个的1/300.
我想知道为什么会这样?1/300来自哪里?必须有一些历史原因.
我多年来一直使用的查询突然开始抛出一个奇怪的错误.当我对查询进行外观修改(1 + x而不是x + 1)时,不再出现错误.它抱怨的存储过程甚至不再存在于服务器上!
如果有人对这个问题是什么以及为什么这个"改变"修复了它,我很好奇?
之前的查询:
UPDATE SOME_DB..JOB_QUEUE
SET ERROR_COUNT = ERROR_COUNT + 1,
JOB_START_TIME = '{1}'
WHERE JOB_ID = {0}
Run Code Online (Sandbox Code Playgroud)
查询后:
UPDATE SOME_DB..JOB_QUEUE
SET ERROR_COUNT = 1 + ERROR_COUNT,
JOB_START_TIME = '{1}'
WHERE JOB_ID = {0}
Run Code Online (Sandbox Code Playgroud)
它抛出的错误:
Sybase.Data.AseClient.AseException: Procedure sp_net_dblatency expects parameter @heartbeat, which was not supplied.
Run Code Online (Sandbox Code Playgroud)
我想知道是否有人有任何想法在这里发生了什么?
编辑. 这是存储过程.
create procedure sp_net_dblatency
@heartbeat datetime
as
update DATABASE_1234..LATENCY set START_UTC_TIME=@heartbeat, END_UTC_TIME=getutcdate() where DATABASE_NAME=db_name()
if (@@ROWCOUNT = 0)
insert DATABASE_1234..LATENCY (DATABASE_NAME, START_UTC_TIME, END_UTC_TIME) values (db_name(), @heartbeat, getutcdate())
Run Code Online (Sandbox Code Playgroud) 我正在编写一个连接到Sybase数据库的VBScript,从表中读取一些数据并将其存储在变量中,然后连接到MS SQL服务器并将数据插入到包含先前存储的可变数据的表中.
我不确定这是否是相关信息,但由于我只有32位驱动程序用于连接到Sybase ODBC,并且由于此VBScript在64位计算机上运行,因此我通过命令行运行它但使用SysWoW64 cmd .exe并像这样运行它:
C:\Windows\SysWOW64>cscript C:\My\Directory\MyVBScript.vbs
Run Code Online (Sandbox Code Playgroud)
我无法连接到Sybase数据库.我最初对连接字符串本身有一些问题,但似乎已经解决了.
这是我现在收到的错误消息,但我不知道如何通过这个:
Microsoft OLE DB Provider for ODBC Drivers:[SYBASE] [ODBC Sybase driver] [Sybase] ct_connect():user api layer:internal Client Library error:HAFAILOVER:尝试连接服务器
这是现在的脚本
Dim connStr, objConn
DataSource = "ICCM_PREVIEW"
ServerIP = "1.2.3.4"
Port = "1234"
DBuser = "myUser"
DBpwd = "myPassword"
DBName = "myDatabase"
Driver = "SYBASE ASE ODBC Driver"
connStr = ""
connStr = connStr &"Driver="& Driver &";"
connStr = connStr &"Data Source="& DataSource &";"
connStr = connStr &"Srvr="& ServerIP &","& Port &";"
connStr …Run Code Online (Sandbox Code Playgroud) 目前,我可以通过执行以下操作为本地数据库设置加密密钥:
if(![MyDemo_MyDemoDB databaseExists]){
SUPConnectionProfile* cp = [MyDemo_MyDemoDB
getConnectionProfile];
[cp setEncryptionKey:@"Yourkey"];
[MyDemo_MyDemoDB closeConnection];
}
Run Code Online (Sandbox Code Playgroud)
因此,当我的用户成功登录(通过提供SUPDataVault的正确密码)时,我收到以下错误:
ERROR sup_sqlite_db_ConnectionWrapperImpl.m:62 dynamicStatement: There is an exception file is encrypted or is not a database
2011-12-21 13:32:05.112 MyDemo10389:11603 MBODebugLogger: SUPPersistenceException SUPPersistenceException from find: -- sup_sqlite_db_StatementWrapperImpl: There is an exception null value for sqlite3_stmt
2011-12-21 13:32:05.225 MyDemo10389:11603 *** Terminating app due to uncaught exception 'SUPPersistenceException', reason: 'SUPPersistenceException from find: -- sup_sqlite_db_StatementWrapperImpl: There is an exception null value for sqlite3_stmt'
Run Code Online (Sandbox Code Playgroud)
我认为正在发生的是,尽管数据库已成功创建,但它仍然是加密的.我该如何解密?
我有以下LINQ查询:
var queryGroups = (from p in db.cl_contact_event
select new Groups { inputFileName = p.input_file_name }).Distinct();
Run Code Online (Sandbox Code Playgroud)
运行时转换为以下内容:
SELECT
[Distinct1].[C1] AS [C1],
[Distinct1].[input_file_name] AS [input_file_name]
FROM ( SELECT DISTINCT
[Extent1].[input_file_name] AS [input_file_name],
1 AS [C1]
FROM [mel].[cl_contact_event] AS [Extent1]
) AS [Distinct1]
Run Code Online (Sandbox Code Playgroud)
现在我很确定有一个子选择的原因是因为我有()包围的基本LINQ查询,然后执行.Distinct()但我不太了解LINQ以确保这一点.如果确实如此,那么有一种方法可以重构/编码我的查询,以便不会发生子选择吗?
我知道这似乎我只是在这里挑选,但我只是好奇.