Sql error 17003

Hibernate Community Forums

Thanks max.

Here is the debug output, and the SQL does look a little suspect (or at least it’s not a syntax I’m familiar with). It is certainly different from the SQL that shows up in the «Dynamic SQL Preview» view.

However, the SQL that shows up when I run a Java program that passes the same string to createQuery() looks the same as below, so I guess it must be something else. This is from the Java code run:

Code:

2007-02-15 21:59:06,390 [main] DEBUG org.hibernate.SQL — select * from ( select rlgc0_.KEYCOL as col_0_0_ from RLGDB.RLG_COMPANY rlgc0_ ) where rownum <= ?

Can you tell why this query would not work in the HQL Query window but work fine when the same string is passed to createQuery()?

From the Hibernate Log console view:

Code:

2007-02-15 16:45:36,921 INFO Worker-6 org.hibernate.cfg.Configuration — configuring from file: hibernate.cfg.xml
2007-02-15 16:45:37,500 INFO Worker-6 org.hibernate.cfg.Configuration — Reading mappings from resource: com/company/rlg/hibernate/CoAdesind.hbm.xml
2007-02-15 16:45:37,593 INFO Worker-6 org.hibernate.cfg.HbmBinder — Mapping class: com.company.rlg.hibernate.CoAdesind -> CO_ADESIND
2007-02-15 16:45:37,609 INFO Worker-6 org.hibernate.cfg.Configuration — Reading mappings from resource: com/company/rlg/hibernate/RlgAnnfund.hbm.xml
2007-02-15 16:45:37,640 INFO Worker-6 org.hibernate.cfg.HbmBinder — Mapping class: com.company.rlg.hibernate.RlgAnnfund -> RLG_ANNFUND
2007-02-15 16:45:37,640 INFO Worker-6 org.hibernate.cfg.Configuration — Reading mappings from resource: com/company/rlg/hibernate/RlgCompany.hbm.xml
2007-02-15 16:45:37,671 INFO Worker-6 org.hibernate.cfg.HbmBinder — Mapping class: com.company.rlg.hibernate.RlgCompany -> RLG_COMPANY
2007-02-15 16:45:37,671 INFO Worker-6 org.hibernate.cfg.Configuration — Reading mappings from resource: com/company/rlg/hibernate/RlgDprc.hbm.xml
2007-02-15 16:45:37,687 INFO Worker-6 org.hibernate.cfg.HbmBinder — Mapping class: com.company.rlg.hibernate.RlgDprc -> RLG_DPRC
2007-02-15 16:45:37,687 INFO Worker-6 org.hibernate.cfg.Configuration — Reading mappings from resource: com/company/rlg/hibernate/RlgQtrfund.hbm.xml
2007-02-15 16:45:37,703 INFO Worker-6 org.hibernate.cfg.HbmBinder — Mapping class: com.company.rlg.hibernate.RlgQtrfund -> RLG_QTRFUND
2007-02-15 16:45:37,703 INFO Worker-6 org.hibernate.cfg.Configuration — Reading mappings from resource: com/company/rlg/hibernate/RlgSecurity.hbm.xml
2007-02-15 16:45:37,703 INFO Worker-6 org.hibernate.cfg.HbmBinder — Mapping class: com.company.rlg.hibernate.RlgSecurity -> RLG_SECURITY
2007-02-15 16:45:37,703 INFO Worker-6 org.hibernate.cfg.Configuration — Configured SessionFactory: null
2007-02-15 16:45:39,796 INFO Worker-4 org.hibernate.connection.DriverManagerConnectionProvider — Using Hibernate built-in connection pool (not for production use!)
2007-02-15 16:45:39,796 INFO Worker-4 org.hibernate.connection.DriverManagerConnectionProvider — Hibernate connection pool size: 20
2007-02-15 16:45:39,796 INFO Worker-4 org.hibernate.connection.DriverManagerConnectionProvider — autocommit mode: false
2007-02-15 16:45:39,796 INFO Worker-4 org.hibernate.connection.DriverManagerConnectionProvider — using driver: oracle.jdbc.driver.OracleDriver at URL: jdbc:oracle:thin:@grolsch.company.com:1521:riskatl
2007-02-15 16:45:39,796 INFO Worker-4 org.hibernate.connection.DriverManagerConnectionProvider — connection properties: {user=rlgdb, password=****}
2007-02-15 16:45:40,796 INFO Worker-4 org.hibernate.cfg.SettingsFactory — RDBMS: Oracle, version: Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 — 64bit Production
With the Partitioning, OLAP and Data Mining options
2007-02-15 16:45:40,796 INFO Worker-4 org.hibernate.cfg.SettingsFactory — JDBC driver: Oracle JDBC driver, version: 10.2.0.2.0
2007-02-15 16:45:40,828 INFO Worker-4 org.hibernate.dialect.Dialect — Using dialect: org.hibernate.dialect.OracleDialect
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.transaction.TransactionFactoryFactory — Using default transaction strategy (direct JDBC transactions)
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.transaction.TransactionManagerLookupFactory — No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.cfg.SettingsFactory — Automatic flush during beforeCompletion(): disabled
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.cfg.SettingsFactory — Automatic session close at end of transaction: disabled
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.cfg.SettingsFactory — JDBC batch size: 15
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.cfg.SettingsFactory — JDBC batch updates for versioned data: disabled
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.cfg.SettingsFactory — Scrollable result sets: enabled
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.cfg.SettingsFactory — JDBC3 getGeneratedKeys(): disabled
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.cfg.SettingsFactory — Connection release mode: auto
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.cfg.SettingsFactory — Default schema: RLGDB
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.cfg.SettingsFactory — Default batch fetch size: 1
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.cfg.SettingsFactory — Generate SQL with comments: disabled
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.cfg.SettingsFactory — Order SQL updates by primary key: disabled
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.cfg.SettingsFactory — Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.hql.ast.ASTQueryTranslatorFactory — Using ASTQueryTranslatorFactory
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.cfg.SettingsFactory — Query language substitutions: {}
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.cfg.SettingsFactory — JPA-QL strict compliance: disabled
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.cfg.SettingsFactory — Second-level cache: enabled
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.cfg.SettingsFactory — Query cache: disabled
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.cfg.SettingsFactory — Cache provider: org.hibernate.cache.NoCacheProvider
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.cfg.SettingsFactory — Optimize cache for minimal puts: disabled
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.cfg.SettingsFactory — Structured second-level cache entries: disabled
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.cfg.SettingsFactory — Echoing all SQL to stdout
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.cfg.SettingsFactory — Statistics: disabled
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.cfg.SettingsFactory — Deleted entity synthetic identifier rollback: disabled
2007-02-15 16:45:40,843 INFO Worker-4 org.hibernate.cfg.SettingsFactory — Default entity-mode: pojo
2007-02-15 16:45:40,906 INFO Worker-4 org.hibernate.impl.SessionFactoryImpl — building session factory
2007-02-15 16:45:41,500 INFO Worker-4 org.hibernate.impl.SessionFactoryObjectFactory — Not binding factory to JNDI, no JNDI name configured
2007-02-15 16:47:38,781 DEBUG main org.hibernate.jdbc.AbstractBatcher — about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
2007-02-15 16:47:38,781 DEBUG main org.hibernate.jdbc.ConnectionManager — opening JDBC connection
2007-02-15 16:47:38,781 DEBUG main org.hibernate.SQL — select * from ( select rlgc0_.KEYCOL as col_0_0_ from RLGDB.RLG_COMPANY rlgc0_ ) where rownum <= ?
2007-02-15 16:47:38,781 DEBUG main org.hibernate.jdbc.AbstractBatcher — preparing statement
2007-02-15 16:47:38,781 DEBUG main org.hibernate.jdbc.AbstractBatcher — about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
2007-02-15 16:47:38,781 DEBUG main org.hibernate.jdbc.AbstractBatcher — closing statement
2007-02-15 16:47:38,781 WARN main org.hibernate.util.JDBCExceptionReporter — SQL Error: 17003, SQLState: null
2007-02-15 16:47:38,781 ERROR main org.hibernate.util.JDBCExceptionReporter — Invalid column index
2007-02-15 16:47:38,781 DEBUG main org.hibernate.jdbc.JDBCContext — after autocommit
2007-02-15 16:47:38,781 DEBUG main org.hibernate.jdbc.ConnectionManager — aggressively releasing JDBC connection
2007-02-15 16:47:38,781 DEBUG main org.hibernate.jdbc.ConnectionManager — releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)]
2007-02-15 16:47:38,781 DEBUG main org.hibernate.jdbc.ConnectionManager — connection already null in cleanup : no action

Cheers…


_________________
Roy Goodman

Hi,

I created a WMI alert which actually monitor any DDL event on a database. Like when ever a Database got Created/Altered/Deleted its entry will be written to a table in Master database. I am reading this class thru WMI.

SELECT * FROM AUDIT_LOGIN_CHANGE_PASSWORD_EVENT

So once such event occurs this alert got triggered and kicks a job which interns insert data to a table. Now if I run a Create/Alter/Delete database Alert does got fired but SQL Job not able to insert data into table and fails with this error.

Date        5/28/2010 6:14:26 PM
Log        Job History (capture pwd_change_EVENTS)

Step ID        1
Server        GURPSETH
Job Name        capture pwd_change_EVENTS
Step Name        Insert data into LogEvents
Duration        00:00:00
Sql Severity        0
Sql Message ID        0
Operator Emailed       
Operator Net sent       
Operator Paged       
Retries Attempted        0

Message
Unable to start execution of step 1 (reason: Variable WMI(HostName) not found).  The step failed.

In SQL Server Error Logs we have these errors.

2010-05-28 18:13:21.14 spid57      Error: 17003, Severity: 16, State: 1.
2010-05-28 18:13:21.14 spid57      Closed event notification conversation endpoint with handle ‘{F143118A-3B6A-DF11-B9E1-0022FAD17E6A}’, due to the following error: ‘<?xml version=»1.0″?><Error xmlns=»http://schemas.microsoft.com/SQL/ServiceBroker/Error»><Code>-8470</Code><Description>Remote
service has been dropped.</Description></Error>’.
2010-05-28 18:13:55.14 spid12s     Error: 17001, Severity: 16, State: 1.
2010-05-28 18:13:55.14 spid12s     Failure to send an event notification instance of type ‘AUDIT_LOGIN_CHANGE_PASSWORD_EVENT’ on conversation handle ‘{F143118A-3B6A-DF11-B9E1-0022FAD17E6A}’. Error Code = ‘8429’.
2010-05-28 18:13:58.08 spid14s     Error: 17005, Severity: 16, State: 1.
2010-05-28 18:13:58.08 spid14s     Event notification ‘SQLWEP_DDD57A95_4218_4830_AC03_1127C9AABB1C’ in database ‘master’ dropped due to send time service broker errors. Check to ensure the conversation handle, service broker contract, and
service specified in the event notification are active.

Need help on this.

Below is the script which I am using which is creating table, job and alert.

/*******************************************************************************************
*  This script will create 1 Alert to Monitor Create database, Alter Database &
*  Drop database events. The alert will run a job and the job will enter data in a table.
*
* For any suggestion contact :gur.sethi@in.ibm.com and abhay.chaudhary@in.ibm.com
*******************************************************************************************/

/* Step 1: creating the table to capture the DDL information */

USE Master
GO

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[DDl_DATABASE_EVENTS]’) AND OBJECTPROPERTY(id, N’IsUserTable’) = 1)
DROP TABLE [dbo].[DDL_DATABASE_EVENTS]
GO

CREATE TABLE [dbo].[DDL_DATABASE_EVENTS] (
[computerName] Varchar(20),
[DatabaseName] varchar(20),
[Loginname] Varchar(20),
[PostTime] [datetime] NOT NULL ,
[SQLInstance] Varchar(20),
[TSqlcommand] Varchar (500),
[RecordID] [int] IDENTITY (1,1) NOT FOR REPLICATION NOT NULL,
[Flag] [int] NOT NULL CONSTRAINT [DF_DDL_DATABASE_EVENTS_Flag]  DEFAULT ((0))
) ON [PRIMARY]
GO

CREATE INDEX [DDL_DATABASE_EVENTS_IDX01] ON [dbo].[DDL_DATABASE_EVENTS]([Posttime]) WITH FILLFACTOR = 100 ON [PRIMARY]
GO

/*Step 2 : Creating the Job that will enter values into the DDL_DATABASE_EVENTS table created above*/
/*         Service account and sql operator option are optional*/
/*         Error handling is also added and we are running it in a transaction*/

USE [msdb]
GO

IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs_view WHERE name = N’capture DDL_DATABASE_EVENTS’)
EXEC msdb.dbo.sp_delete_job @job_name = N’capture DDL_DATABASE_EVENTS’, @delete_unused_schedule=1

GO

—DECLARE @ServiceAccount varchar(128)
—SET @ServiceAccount = N'<job_owner_account>’
—DECLARE @SQLOperator varchar(128)
—SET @SQLOperator = N'<sql_agent_operator>’

BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0

IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]’ AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N’JOB’, @type=N’LOCAL’, @name=N'[Uncategorized (Local)]’
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
END

DECLARE @jobId BINARY(16)
EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N’capture DDL_DATABASE_EVENTS’,
@enabled=1,
@notify_level_eventlog=2,
@notify_level_email=3,
@notify_level_netsend=0,
@notify_level_page=0,
@delete_level=0,
@description=N’Job for responding to SP change events’,
@category_name=N'[Uncategorized (Local)]’,
—@owner_login_name=@ServiceAccount,
—@notify_email_operator_name=@SQLOperator,
@job_id = @jobId OUTPUT

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

/*Step 3: Insert values into DDL_DATABASE_EVENTS*/

EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N’Insert data into LogEvents’,

@step_id=1,
@cmdexec_success_code=0,
@on_success_action=1,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N’TSQL’,
@command=N’
INSERT INTO DDL_DATABASE_EVENTS (
Computername,
DatabaseName,
LoginName,
PostTime,
SQLInstance,
TSqlCommand
)
VALUES (
N»$(ESCAPE_NONE(WMI(ComputerName)))»,
N»$(ESCAPE_NONE(WMI(DatabaseName)))»,
N»$(ESCAPE_NONE(WMI(Loginname)))»,
GETDATE(),
N»$(ESCAPE_NONE(WMI(SQLInstance)))»,
N»$(ESCAPE_NONE(WMI(TSQLCommand)))»
)’,
@database_name=N’master’,
@flags=0

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)’
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION

GOTO EndSave

QuitWithRollback:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:
GO

/*Step 4:Creating ALTER DATABASE alert and associating it with the Job to be fired */

USE [msdb]
GO

IF EXISTS (SELECT name FROM msdb.dbo.sysalerts WHERE name = N’Respond to ALTER_DATABASE_EVENTS’)
EXEC msdb.dbo.sp_delete_alert @name=N’Respond to ALTER_DATABASE_EVENTS’

GO

DECLARE @server_namespace varchar(255)
IF ISNULL(CHARINDEX(», @@SERVERNAME), 0) > 0
SET @server_namespace = N’\.rootMicrosoftSqlServerServerEvents’ + SUBSTRING(@@SERVERNAME, ISNULL(CHARINDEX(», @@SERVERNAME), 0) + 1, LEN(@@SERVERNAME) — ISNULL(CHARINDEX(‘/’, @@SERVERNAME), 0))
ELSE
SET @server_namespace = N’\.rootMicrosoftSqlServerServerEventsMSSQLSERVER’

EXEC msdb.dbo.sp_add_alert @name=N’Respond to ALTER_DATABASE_EVENTS’,
@enabled=1,
@notification_message=N’Your Message’,
@wmi_namespace=@server_namespace,
@wmi_query=N’SELECT * FROM ALTER_DATABASE’,
@job_name=’capture DDL_DATABASE_EVENTS’ ;

GO

/*Step 5: Creating CREATE DATABASE alert and associating it with the Job to be fired */

USE [msdb]
GO

IF EXISTS (SELECT name FROM msdb.dbo.sysalerts WHERE name = N’Respond to CREATE_DATABASE_EVENTS’)
EXEC msdb.dbo.sp_delete_alert @name=N’Respond to CREATE_DATABASE_EVENTS’

GO

DECLARE @server_namespace varchar(255)
IF ISNULL(CHARINDEX(», @@SERVERNAME), 0) > 0
SET @server_namespace = N’\.rootMicrosoftSqlServerServerEvents’ + SUBSTRING(@@SERVERNAME, ISNULL(CHARINDEX(», @@SERVERNAME), 0) + 1, LEN(@@SERVERNAME) — ISNULL(CHARINDEX(‘/’, @@SERVERNAME), 0))
ELSE
SET @server_namespace = N’\.rootMicrosoftSqlServerServerEventsMSSQLSERVER’

EXEC msdb.dbo.sp_add_alert @name=N’Respond to CREATE_DATABASE_EVENTS’,
@enabled=1,
@notification_message=N’Your Message’,
@wmi_namespace=@server_namespace,
@wmi_query=N’SELECT * FROM CREATE_DATABASE’,
@job_name=’capture DDL_DATABASE_EVENTS’ ;

GO

/*Step 6: Creating DROP DATABASE alert and associating it with the Job to be fired */

USE [msdb]
GO

IF EXISTS (SELECT name FROM msdb.dbo.sysalerts WHERE name = N’Respond to DROP_DATABASE_EVENTS’)
EXEC msdb.dbo.sp_delete_alert @name=N’Respond to DROP_DATABASE_EVENTS’

GO

DECLARE @server_namespace varchar(255)
IF ISNULL(CHARINDEX(», @@SERVERNAME), 0) > 0
SET @server_namespace = N’\.rootMicrosoftSqlServerServerEvents’ + SUBSTRING(@@SERVERNAME, ISNULL(CHARINDEX(», @@SERVERNAME), 0) + 1, LEN(@@SERVERNAME) — ISNULL(CHARINDEX(‘/’, @@SERVERNAME), 0))
ELSE
SET @server_namespace = N’\.rootMicrosoftSqlServerServerEventsMSSQLSERVER’

EXEC msdb.dbo.sp_add_alert @name=N’Respond to DROP_DATABASE_EVENTS’,
@enabled=1,
@notification_message=N’Your Message’,
@wmi_namespace=@server_namespace,
@wmi_query=N’SELECT * FROM DROP_DATABASE’,
@job_name=’capture DDL_DATABASE_EVENTS’ ;

GO

Hi,

I created a WMI alert which actually monitor any DDL event on a database. Like when ever a Database got Created/Altered/Deleted its entry will be written to a table in Master database. I am reading this class thru WMI.

SELECT * FROM AUDIT_LOGIN_CHANGE_PASSWORD_EVENT

So once such event occurs this alert got triggered and kicks a job which interns insert data to a table. Now if I run a Create/Alter/Delete database Alert does got fired but SQL Job not able to insert data into table and fails with this error.

Date 5/28/2010 6:14:26 PM

Log Job History (capture pwd_change_EVENTS)

Step ID 1

Server GURPSETH

Job Name capture pwd_change_EVENTS

Step Name Insert data into LogEvents

Duration 00:00:00

Sql Severity 0

Sql Message ID 0

Operator Emailed

Operator Net sent

Operator Paged

Retries Attempted 0

Message

Unable to start execution of step 1 (reason: Variable WMI(HostName) not found). The step failed.

In SQL Server Error Logs we have these errors.

2010-05-28 18:13:21.14 spid57 Error: 17003, Severity: 16, State: 1.

2010-05-28 18:13:21.14 spid57 Closed event notification conversation endpoint with handle ‘{F143118A-3B6A-DF11-B9E1-0022FAD17E6A}’, due to the following error: ‘<?xml version=»1.0″?><Error xmlns=»http://schemas.microsoft.com/SQL/ServiceBroker/Error»><Code>-8470</Code><Description>Remote service has been dropped.</Description></Error>’.

2010-05-28 18:13:55.14 spid12s Error: 17001, Severity: 16, State: 1.

2010-05-28 18:13:55.14 spid12s Failure to send an event notification instance of type ‘AUDIT_LOGIN_CHANGE_PASSWORD_EVENT’ on conversation handle ‘{F143118A-3B6A-DF11-B9E1-0022FAD17E6A}’. Error Code = ‘8429’.

2010-05-28 18:13:58.08 spid14s Error: 17005, Severity: 16, State: 1.

2010-05-28 18:13:58.08 spid14s Event notification ‘SQLWEP_DDD57A95_4218_4830_AC03_1127C9AABB1C’ in database ‘master’ dropped due to send time service broker errors. Check to ensure the conversation handle, service broker contract, and service specified in the event notification are active.

Need help on this.

Below is the script which I am using which is creating table, job and alert.

/*******************************************************************************************

* This script will create 1 Alert to Monitor Create database, Alter Database &

* Drop database events. The alert will run a job and the job will enter data in a table.

*

*******************************************************************************************/

/* Step 1: creating the table to capture the DDL information */

USE Master

GO

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[DDl_DATABASE_EVENTS]’) AND OBJECTPROPERTY(id, N’IsUserTable’) = 1)

DROP TABLE [dbo].[DDL_DATABASE_EVENTS]

GO

CREATE TABLE [dbo].[DDL_DATABASE_EVENTS] (

[computerName] Varchar(20),

[DatabaseName] varchar(20),

[Loginname] Varchar(20),

[PostTime] [datetime] NOT NULL ,

[SQLInstance] Varchar(20),

[TSqlcommand] Varchar (500),

[RecordID] [int] IDENTITY (1,1) NOT FOR REPLICATION NOT NULL,

[Flag] [int] NOT NULL CONSTRAINT [DF_DDL_DATABASE_EVENTS_Flag] DEFAULT ((0))

) ON [PRIMARY]

GO

CREATE INDEX [DDL_DATABASE_EVENTS_IDX01] ON [dbo].[DDL_DATABASE_EVENTS]([Posttime]) WITH FILLFACTOR = 100 ON [PRIMARY]

GO

/*Step 2 : Creating the Job that will enter values into the DDL_DATABASE_EVENTS table created above*/

/* Service account and sql operator option are optional*/

/* Error handling is also added and we are running it in a transaction*/

USE [msdb]

GO

IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs_view WHERE name = N’capture DDL_DATABASE_EVENTS’)

EXEC msdb.dbo.sp_delete_job @job_name = N’capture DDL_DATABASE_EVENTS’, @delete_unused_schedule=1

GO

—DECLARE @ServiceAccount varchar(128)

—SET @ServiceAccount = N'<job_owner_account>’

—DECLARE @SQLOperator varchar(128)

—SET @SQLOperator = N'<sql_agent_operator>’

BEGIN TRANSACTION

DECLARE @ReturnCode INT

SELECT @ReturnCode = 0

IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]’ AND category_class=1)

BEGIN

EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N’JOB’, @type=N’LOCAL’, @name=N'[Uncategorized (Local)]’

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

END

DECLARE @jobId BINARY(16)

EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N’capture DDL_DATABASE_EVENTS’,

@enabled=1,

@notify_level_eventlog=2,

@notify_level_email=3,

@notify_level_netsend=0,

@notify_level_page=0,

@delete_level=0,

@description=N’Job for responding to SP change events’,

@category_name=N'[Uncategorized (Local)]’,

—@owner_login_name=@ServiceAccount,

—@notify_email_operator_name=@SQLOperator,

@job_id = @jobId OUTPUT

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

/*Step 3: Insert values into DDL_DATABASE_EVENTS*/

EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N’Insert data into LogEvents’,

@step_id=1,

@cmdexec_success_code=0,

@on_success_action=1,

@on_success_step_id=0,

@on_fail_action=2,

@on_fail_step_id=0,

@retry_attempts=0,

@retry_interval=0,

@os_run_priority=0, @subsystem=N’TSQL’,

@command=N’

INSERT INTO DDL_DATABASE_EVENTS (

Computername,

DatabaseName,

LoginName,

PostTime,

SQLInstance,

TSqlCommand

)

VALUES (

N»$(ESCAPE_NONE(WMI(ComputerName)))»,

N»$(ESCAPE_NONE(WMI(DatabaseName)))»,

N»$(ESCAPE_NONE(WMI(Loginname)))»,

GETDATE(),

N»$(ESCAPE_NONE(WMI(SQLInstance)))»,

N»$(ESCAPE_NONE(WMI(TSQLCommand)))»

)’,

@database_name=N’master’,

@flags=0

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)’

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

COMMIT TRANSACTION

GOTO EndSave

QuitWithRollback:

IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION

EndSave:

GO

/*Step 4:Creating ALTER DATABASE alert and associating it with the Job to be fired */

USE [msdb]

GO

IF EXISTS (SELECT name FROM msdb.dbo.sysalerts WHERE name = N’Respond to ALTER_DATABASE_EVENTS’)

EXEC msdb.dbo.sp_delete_alert @name=N’Respond to ALTER_DATABASE_EVENTS’

GO

DECLARE @server_namespace varchar(255)

IF ISNULL(CHARINDEX(», @@SERVERNAME), 0) > 0

SET @server_namespace = N’\.rootMicrosoftSqlServerServerEvents’ + SUBSTRING(@@SERVERNAME, ISNULL(CHARINDEX(», @@SERVERNAME), 0) + 1, LEN(@@SERVERNAME) — ISNULL(CHARINDEX(‘/’, @@SERVERNAME), 0))

ELSE

SET @server_namespace = N’\.rootMicrosoftSqlServerServerEventsMSSQLSERVER’

EXEC msdb.dbo.sp_add_alert @name=N’Respond to ALTER_DATABASE_EVENTS’,

@enabled=1,

@notification_message=N’Your Message’,

@wmi_namespace=@server_namespace,

@wmi_query=N’SELECT * FROM ALTER_DATABASE’,

@job_name=’capture DDL_DATABASE_EVENTS’ ;

GO

/*Step 5: Creating CREATE DATABASE alert and associating it with the Job to be fired */

USE [msdb]

GO

IF EXISTS (SELECT name FROM msdb.dbo.sysalerts WHERE name = N’Respond to CREATE_DATABASE_EVENTS’)

EXEC msdb.dbo.sp_delete_alert @name=N’Respond to CREATE_DATABASE_EVENTS’

GO

DECLARE @server_namespace varchar(255)

IF ISNULL(CHARINDEX(», @@SERVERNAME), 0) > 0

SET @server_namespace = N’\.rootMicrosoftSqlServerServerEvents’ + SUBSTRING(@@SERVERNAME, ISNULL(CHARINDEX(», @@SERVERNAME), 0) + 1, LEN(@@SERVERNAME) — ISNULL(CHARINDEX(‘/’, @@SERVERNAME), 0))

ELSE

SET @server_namespace = N’\.rootMicrosoftSqlServerServerEventsMSSQLSERVER’

EXEC msdb.dbo.sp_add_alert @name=N’Respond to CREATE_DATABASE_EVENTS’,

@enabled=1,

@notification_message=N’Your Message’,

@wmi_namespace=@server_namespace,

@wmi_query=N’SELECT * FROM CREATE_DATABASE’,

@job_name=’capture DDL_DATABASE_EVENTS’ ;

GO

/*Step 6: Creating DROP DATABASE alert and associating it with the Job to be fired */

USE [msdb]

GO

IF EXISTS (SELECT name FROM msdb.dbo.sysalerts WHERE name = N’Respond to DROP_DATABASE_EVENTS’)

EXEC msdb.dbo.sp_delete_alert @name=N’Respond to DROP_DATABASE_EVENTS’

GO

DECLARE @server_namespace varchar(255)

IF ISNULL(CHARINDEX(», @@SERVERNAME), 0) > 0

SET @server_namespace = N’\.rootMicrosoftSqlServerServerEvents’ + SUBSTRING(@@SERVERNAME, ISNULL(CHARINDEX(», @@SERVERNAME), 0) + 1, LEN(@@SERVERNAME) — ISNULL(CHARINDEX(‘/’, @@SERVERNAME), 0))

ELSE

SET @server_namespace = N’\.rootMicrosoftSqlServerServerEventsMSSQLSERVER’

EXEC msdb.dbo.sp_add_alert @name=N’Respond to DROP_DATABASE_EVENTS’,

@enabled=1,

@notification_message=N’Your Message’,

@wmi_namespace=@server_namespace,

@wmi_query=N’SELECT * FROM DROP_DATABASE’,

@job_name=’capture DDL_DATABASE_EVENTS’ ;

GO

Regards

GURSETHi

SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Enterprise Core SQL Server 2012 Standard SQL Server 2012 Service Pack 3 SQL Server 2014 Developer SQL Server 2014 Enterprise SQL Server 2014 Enterprise Core SQL Server 2014 Standard SQL Server 2014 Service Pack 2 SQL Server 2016 Developer SQL Server 2016 Enterprise SQL Server 2016 Enterprise Core SQL Server 2016 Standard SQL Server 2016 Service Pack 1 More…Less

Symptoms

Assume that you use Windows Management Instrumentation (WMI) to monitor events in Microsoft SQL Server. In this situation, a memory leak occurs in SQLWEP. This causes the Wmiprvse.exe process to crash with a ‘WBEM_E_OUT_OF_MEMORY’ error. Additionally, error messages that resemble the following are logged in the SQL Server error log:

Error: 17003 — Closed event notification conversation endpoint with handle ‘{7BC24B36-B24C-E611-944D-0050569F4BF2}’, due to the following error: ‘<?xml version=»1.0″?><Error xmlns=»http://schemas.microsoft.com/SQL/ServiceBroker/Error»><Code>-8470</Code><Description>Remote service has been dropped.</Description></Error>’.

Error: 17001 — Failure to send an event notification instance of type ‘AUDIT_DATABASE_OBJECT_MANAGEMENT_EVENT’ on conversation handle ‘{7EC24B36-B24C-E611-944D-0050569F4BF2}’. Error Code = ‘8429’.

Error: 17005 — Event notification ‘SQLWEP_2C6B2B50_50D2_4615_BEDF_A1E2092223C7’ in database ‘master’ dropped due to send time service broker errors.

Resolution

This issue is fixed in the following cumulative updates for SQL Server:

       Cumulative Update 6 for SQL Server 2016 RTM

       Cumulative Update 3 for SQL Server 2016 SP1

       Cumulative Update 5 for SQL Server 2014 SP2

       Cumulative Update 12 for SQL Server 2014 SP1

       Cumulative Update 8 for SQL Server 2012 SP3

Status

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the «Applies to» section.

References

Learn about the terminologythat Microsoft uses to describe software updates.

Need more help?

Я создал родительский и дочерний классы в спящем режиме и JPA. Когда я пытаюсь сохранить класс, я получаю исключение SQL с указанием «недопустимый индекс столбца».

Это родительский класс:

@Entity
@Table(name = "vnd_base_file_format")
public class VendorBaseFileFormat implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "base_file_format_id")
    private int baseFileFormatId;

    @Column(name = "vendor_id")
    private int vendorId;

    @Column(name = "format_name")
    private String formatName;

    @Column(name = "enabled")
    private boolean enabled;

    @Column(name = "month_year_format")
    private String monthYearFormat;

    @OneToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
    @JoinColumn(name="base_file_format_id", nullable=false)
    @OrderBy("index")
    private List<VendorBaseFileDimension> dimensions;

Это дочерний класс:

@Entity
@Table(name = "vnd_base_file_format_dim")
public class VendorBaseFileDimension implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "dimension_id")
    private int dimensionId;

    @Column(name = "alternate_name")
    private String alternateName;

    @Column(name = "dimension_index")
    private int index;

    @Id
    @ManyToOne
    @JoinColumn(name="base_file_format_id", nullable=false, insertable=false)
    private VendorBaseFileFormat format;

Я просто создаю родительский класс и добавляю к нему один дочерний класс. Когда я вызываю entityManager.persist, я получаю следующее сообщение:

Hibernate: insert into vnd_base_file_format (enabled, format_name, month_year_format, vendor_id, base_file_format_id) values (?, ?, ?, ?, ?)
Hibernate: insert into vnd_base_file_format_dim (alternate_name, dimension_index, base_file_format_id, dimension_id) values (?, ?, ?, ?)
[21:53:01.159] WARN  JDBCExceptionReporter - SQL Error: 17003, SQLState: 99999
[21:53:01.159] ERROR JDBCExceptionReporter - Invalid column index

Любая помощь будет оценена по достоинству. Я пробовал несколько вещей, таких как установка вставляемого значения false, но не повезло. Я видел один вопрос, в котором упоминалась проблема с составными ключами. Нужно ли мне создавать уникальный столбец последовательности для дочернего элемента, если он будет существовать только как часть родителя?

Понравилась статья? Поделить с друзьями:
  • Sql error 15151
  • Spt aki escape from tarkov ошибка
  • Sql error 15023
  • Sql error 1452
  • Spt aki error