Product: Aqua Data Studio
Version: 18.0.0-devi-261
Build #: 51490
Build Date: 2016-Oct-12 05:56:02 PM
Operating Environment: Windows 10 (10.0, amd64) / Cp1252 / en / IN / Oracle Corporation 1.8.0_101-b13
Memory: Max=704,643,072; Total=193,462,272; Free=36,161,312; CPUs=4
Database Version: Sybase ASE 16
Steps to reproduce issue:
-- Open SQL log dialog
1. Execute given script through query analyzer
sp_addserver 'sample_RS', ASEnterprise, '10.171.0.193:5000'
go
Note : You will need to modify the script as per server ip
2. In Schema browser, go to "Security" node and Expand "Remote Servers" node
3. Select "sample_RS" and right-click option "Drop Remote Server" and Observe the SQL log
This issue is reproducible for below right click options:
Drop Remote Server
Alter Remote Server
Remote Server Properties
Script Object to Windows as > Drop/ CREATE
Script Object to New Windos as > Drop/ CREATE
Script Object to File as > Drop/ CREATE
Actual Result: No action is performed as the generated SQL to extract the REMOTE SERVER details has syntax error. The alias given for the table "master.dbo.syslogins log " in query is "log" which isthe keyword and causes the syntax error. Below is the SQL statement:
select
srv.srvname,
srv.srvnetname,
srv.srvstatus,
v.name,
srv.srvsecmech,
srv.srvcost,
log.name,
rem.remoteusername,
0 as isrole,
0 as isexternal,
rem.status as trusted
from
master.dbo.sysservers srv
left join master.dbo.sysremotelogins rem
on(srv.srvid = rem.remoteserverid)
left join master.dbo.spt_values v
on(srv.srvclass = v.number and
v.type = 'X' and
v.name != 'access_server')
left join master.dbo.syslogins log
on(rem.suid = log.suid)
where
srv.srvname = 'sample_RS'
UNION
select
srv.srvname,
srv.srvnetname,
srv.srvstatus,
v.name,
srv.srvsecmech,
srv.srvcost,
ext.locext,
ext.remext,
ext.isrole as isrole,
1 as isexternal,
0 as trusted
from
master.dbo.sysservers srv
left join master.dbo.spt_values v
on(srv.srvclass = v.number and
v.type = 'X' and
v.name != 'access_server'),
( select
s.srvid as id,
l.name as locext,
a.object_cinfo as remext,
0 as isrole
from
master.dbo.sysattributes a,
master.dbo.sysservers s,
master.dbo.syslogins l
WHERE
a.class = 9 AND
a.object_type = 'EL' AND
a.object_info1 = s.srvid AND
a.object = l.suid
UNION
select
s.srvid as id,
null as locext,
a.object_cinfo as remext,
0 as isrole
from
master.dbo.sysattributes a,
master.dbo.sysservers s
WHERE
a.class = 9 AND
a.object_type = 'EL' AND
a.object_info1 = s.srvid AND
a.object_info2 = -1 AND
a.object = -1
UNION
select
s.srvid as id,
r.name as locext,
a.object_cinfo as remext,
1 as isrole
FROM
master.dbo.sysattributes a,
master.dbo.sysservers s,
master.dbo.syssrvroles r
WHERE
a.class = 9 AND
a.object_type = 'EL' AND
a.object_info1 = s.srvid AND
a.object_info2 = r.srid ) ext
where
srv.srvid = ext.id and
srv.srvname = 'sample_RS'
Exception thrown:
com.sybase.jdbc4.jdbc.SybSQLException: Incorrect syntax near the keyword 'log on'.
at com.sybase.jdbc4.tds.Tds.processEed(Tds.java:4117)
at com.sybase.jdbc4.tds.Tds.nextResult(Tds.java:3207)
at com.sybase.jdbc4.tds.Tds.getResultSetResult(Tds.java:3973)
at com.sybase.jdbc4.tds.TdsCursor.open(TdsCursor.java:328)
at com.sybase.jdbc4.jdbc.SybStatement.executeQuery(SybStatement.java:2604)
at com.sybase.jdbc4.jdbc.SybStatement.executeQuery(SybStatement.java:555)
at \\.\\.\\हिñçêČάй語简�?한\\.cꂅꋧ⣪⣥chargoto.executeQuery(Unknown Source)
at \\.\\.\\हिñçêČάй語简�?한\\.aꁆꐅꊸ᠈.a(Unknown Source)
at \\.\\.\\हिñçêČάй語简�?한\\.aꁆꐅꊸ᠈.b(Unknown Source)
at \\.\\.\\हिñçêČάй語简�?한\\.aꁆꐅꊸ᠈.a(Unknown Source)
at \\.\\.\\हिñçêČάй語简�?한\\.Zꆍꊣᝍ⣱void.a(Unknown Source)
at \\.\\.\\हिñçêČάй語简�?한\\.i⡑ꎜꌷᛎint.a(Unknown Source)
at com.aquafold.datastudio.mainframe.ActionHandler.actionPerformed(Unknown Source)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at com.jidesoft.plaf.vsnet.VsnetMenuItemUI.doClick(Unknown Source)
at com.jidesoft.plaf.vsnet.VsnetMenuItemUI$MouseInputHandler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:866)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:650)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:381)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Expected Result : Below is the error free SQL statement.
select
srv.srvname,
srv.srvnetname,
srv.srvstatus,
v.name,
srv.srvsecmech,
srv.srvcost,
logs.name,
rem.remoteusername,
0 as isrole,
0 as isexternal,
rem.status as trusted
from
master.dbo.sysservers srv
left join master.dbo.sysremotelogins rem
on(srv.srvid = rem.remoteserverid)
left join master.dbo.spt_values v
on(srv.srvclass = v.number and
v.type = 'X' and
v.name != 'access_server')
left join master.dbo.syslogins logs
on(rem.suid = logs.suid)
where
srv.srvname = 'sample_RS'
UNION
select
srv.srvname,
srv.srvnetname,
srv.srvstatus,
v.name,
srv.srvsecmech,
srv.srvcost,
ext.locext,
ext.remext,
ext.isrole as isrole,
1 as isexternal,
0 as trusted
from
master.dbo.sysservers srv
left join master.dbo.spt_values v
on(srv.srvclass = v.number and
v.type = 'X' and
v.name != 'access_server'),
( select
s.srvid as id,
l.name as locext,
a.object_cinfo as remext,
0 as isrole
from
master.dbo.sysattributes a,
master.dbo.sysservers s,
master.dbo.syslogins l
WHERE
a.class = 9 AND
a.object_type = 'EL' AND
a.object_info1 = s.srvid AND
a.object = l.suid
UNION
select
s.srvid as id,
null as locext,
a.object_cinfo as remext,
0 as isrole
from
master.dbo.sysattributes a,
master.dbo.sysservers s
WHERE
a.class = 9 AND
a.object_type = 'EL' AND
a.object_info1 = s.srvid AND
a.object_info2 = -1 AND
a.object = -1
UNION
select
s.srvid as id,
r.name as locext,
a.object_cinfo as remext,
1 as isrole
FROM
master.dbo.sysattributes a,
master.dbo.sysservers s,
master.dbo.syssrvroles r
WHERE
a.class = 9 AND
a.object_type = 'EL' AND
a.object_info1 = s.srvid AND
a.object_info2 = r.srid ) ext
where
srv.srvid = ext.id and
srv.srvname = 'sample_RS'