Für den aktuellen Befehl ist ein schwerwiegender Fehler aufgetreten...

01/03/2008 - 15:44 von Ernst Greiner | Report spam
Hallo,

Nach abschicken des folgenden Befehls aus dem Management Studio
an einen SQL Server 2005:

exec sp_executesql N'Insert Into tPoolData (Pool, Contact)
Select @poolId as PoolId, OID from vPoolSelectorAllCustomers ',
N'@poolId int',@poolId=2

kommen folgende Messages:

Msg 0, Level 11, State 0, Line 0
Für den aktuellen Befehl ist ein schwerwiegender Fehler aufgetreten.
Löschen Sie eventuelle Ergebnisse.
Msg 0, Level 20, State 0, Line 0
Für den aktuellen Befehl ist ein schwerwiegender Fehler aufgetreten.
Löschen Sie eventuelle Ergebnisse.


Ein:

Insert Into tPoolData (Pool, Contact)
Select 2 as PoolId, OID from vPoolSelectorAllCustomers

funktioniert jedoch klaglos und fügt knapp über 10.000 Datensàtze an.


Ein Einschrànken der Datensàtze mit:

exec sp_executesql N'Insert Into tPoolData (Pool, Contact)
Select @poolId as PoolId, OID from vPoolSelectorAllCustomers
Where ([Name1] like ''s%'' )',N'@poolId int',@poolId=2

funktioniert ebenfalls klaglos und fügt ca. 1.500 Datensàtze an.

Ich habe ein FullBackup, ein TransaktionsLog Backup sowie ein
SHRINKDATABASE durchgeführt, hat aber am Verhalten nichts geàndert.

Über normale "Insert Into..." hab ich über 200.000 Datensàtze ohne
Probleme einfügen können.

Ursprünglich kommt die "exec sp_executesql..." aus einer .Net Anwendung,
ich hab das mit dem Profiler abgefangen und direkt im SQL Server
Management Studio weitergearbeitet.

Warum ist bei einem exec sp_executesql das offensichtlich von der Anzahl
der Datensàtze abhàngig obs geht oder nicht?

Fàllt jemandem etwas ein dazu?


tia Ernst
 

Lesen sie die antworten

#1 Ernst Greiner
01/03/2008 - 17:40 | Warnen spam
Hier noch die Tabelle-Definitionen:

Zum testen habe ich mal den Index idxPoolContact entfernt
und dann hat auch das exec sp_executesql funktioniert.
(bringt mir aber nichts, weil ich den Unique Index brauche).

Ich hab noch überprüft ob die Insert Statements eventuell Datensàtze
anfügen die dem Unique Index widersprechen würden, tun sie aber auch nicht.


USE [Kuba]
GO

/****** Object: Table [dbo].[tPoolData] Script Date: 03/01/2008
17:00:35 ******/

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO



CREATE TABLE [dbo].[tPoolData](
[OID] [int] IDENTITY(1,1) NOT NULL,
[Pool] [int] NOT NULL,
[Contact] [uniqueidentifier] NULL,
[Building] [uniqueidentifier] NULL,
PRIMARY KEY
(
[OID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [Pool]
) ON [Pool]

GO
USE [Kuba]
GO
ALTER TABLE [dbo].[tPoolData] WITH CHECK ADD CONSTRAINT
[fk_tPoolData_tBuilding] FOREIGN KEY([Building])
REFERENCES [dbo].[tBuilding] ([OID])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[tPoolData] WITH CHECK ADD CONSTRAINT
[fk_tPoolData_tContact] FOREIGN KEY([Contact])
REFERENCES [dbo].[tContact] ([OID])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[tPoolData] WITH CHECK ADD CONSTRAINT
[fk_tPoolData_tPool] FOREIGN KEY([Pool])
REFERENCES [dbo].[tPool] ([OID])
ON DELETE CASCADE


CREATE UNIQUE INDEX idxPoolContact
ON dbo.tPoolData (Contact, Building, Pool)
WITH IGNORE_DUP_KEY
ON Pool
GO

Ähnliche fragen