Följande kode ger följande fel på en SQL server och fungerar klockrent på en annan. Båda kör på windows XP med databaser skapade från samma script, samma servicepack på båda sqlServer. Kan du testa att byta ut spInsertUpdateInvObjFile mot en SELECT GETDATE() eller nåt? Jodå det fungerar om jag byter ut spInsertUpdateInvObjFile mot en SELECT GETDATE(). SELECT @@version Vad gör spInsertUpdateInvObjFile då? Kan du klistra in hela koden? Har du testat att ominstallera SQL server? Micke detta är versionenerna: Christoffer här är spInsertUpdateInvObjFile (jag hade klippt bort lite av vb koden (ett par parametrar) i exemplet oven Verkar som problemet ligger i att inte vissa SQL-server tycker om denna typ av frågor. Jag har postat problemet i en "ren tråd" [Insert eller update] . Den översta har ingen servicepack (RTM-version). Det är naturligtvis inte så att viss hårdvara fungerar och viss inte gör det. Ett access violation är inte någon litet varning om att du ska skriva något annorlunda, precis som felmeddelandet säger är det ett kritiskt fel. Jag har samma problem på en tredje testmaskin som jag har servicepack 2 på. Och jag hade samma problem innan jag lade till servicepack 2 på den andra med. Jag tror jag har hittat felet. Jag hade inte skriptat allt utan jag hade skapat databasen med defaultvärden med "SQL Server Enterprice Manager" och sedan kört skript med alla tabeller etc. Vad var det som skiljde mellan databaserna? (Om du vill ha en gissning på orsak...) Den "inte" fungerande:Process 51 generated fatal ....
Felmeddelande:
"System.Data.SqlClient.SqlException: SqlDumpExceptionHandler: Process 51 generated fatal exception
c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process."
<code>
Private aCon As SqlConnection = New SqlConnection
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
Dim aInv As New sqlInv
Dim i As Integer = 1
Dim rows As Integer
aCon = New SqlConnection
Try
For i = 0 To 200
Dim aCom As New SqlCommand
aCom.CommandType = CommandType.StoredProcedure
aCom.CommandText = "spInsertUpdateInvObjFile"
aCom.Parameters.Add("@id", i)
aCom.Parameters.Add("@nvcCat", "Kat1")
aCom.Parameters.Add("@nvcSubCat", "")
aCon.ConnectionString = "workstation id=minBurk;packet size=4096;user id=minAnvr;
data source=minBurk;persist security info=True;initial catalog=mva_hbg;password=mittPasswd"
aCon.Open()
aCom.Connection = aCon
rows = aCom.ExecuteNonQuery()
aCon.Close()
Next
Catch ex As Exception
'Krashar efter ca 3 varv.....
MsgBox(i.ToString & vbNewLine & ex.ToString)
End Try
End Sub
</code>Sv: Process 51 generated fatal ....
Då vet du om du får köra så mycket kod mot databaserna.
Idé:
Kan det vara så att en är Enterprise/Developer och den andra är Personal/MSDE. Det finns ju lite olika gränser för samtidiga kommandon på dessa versioner.
/mickeSv:Process 51 generated fatal ....
Var kollar man exakt vad det är för sql-serverversion?Sv: Process 51 generated fatal ....
klistra in resultatet om du vill få hjälp.
/mickeSv: Process 51 generated fatal ....
I vilket fall som helst känns det som att du antingen har stött på en bugg eller har ett problem med hårdvara, eftersom du får en AV. Är det olika hårdvara på maskinerna?Sv: Process 51 generated fatal ....
Du kan ha installerat något program som har bytt ut någon av systemfilerna
eller någon annan fil som påverkar SQL.Sv:Process 51 generated fatal ....
Microsoft SQL Server 2000 - 8.00.194 (Intel X86)
Aug 6 2000 00:57:48
Copyright (c) 1988-2000 Microsoft Corporation
Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 2)
Microsoft SQL Server 2000 - 8.00.760 (Intel X86)
Dec 17 2002 14:22:05
Copyright (c) 1988-2003 Microsoft Corporation
Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 2)
Det är den övre som fungerar!Sv:Process 51 generated fatal ....
<code>
CREATE PROCEDURE [spInsertUpdateInvObjFile]
(@id [int],
@nvcCat [nvarchar](50),
@nvcSubCat [nvarchar](50),
@nvcFileSubCat [nvarchar](50),
@nvcName [nvarchar](100),
@intPrio [int],
@nvcInfo [ntext],
@nvcContact [ntext],
@nvcFileName [nvarchar](255),
@bitIsFile [bit])
AS
IF EXISTS(SELECT [id] FROM tblInvObjFile WHERE [id] = @id)
BEGIN
UPDATE [tblInvObjFile]
SET [nvcCat] = @nvcCat,
[nvcSubCat] = @nvcSubCat,
[nvcFileSubCat] = @nvcFileSubCat,
[nvcName] = @nvcName,
[intPrio] = @intPrio,
[nvcInfo] = @nvcInfo,
[nvcContact] = @nvcContact,
[nvcFileName] = @nvcFileName,
[bitIsFile] = @bitIsFile
WHERE
( [id] = @id)
return @id
END
ELSE
BEGIN
INSERT INTO [tblInvObjFile]
( [nvcCat],
[nvcSubCat],
[nvcFileSubCat],
[nvcName],
[intPrio],
[nvcInfo],
[nvcContact],
[nvcFileName],
[bitIsFile])
VALUES
( @nvcCat,
@nvcSubCat,
@nvcFileSubCat,
@nvcName,
@intPrio,
@nvcInfo,
@nvcContact,
@nvcFileName,
@bitIsFile)
return @@identity
END
</code>
Ja det är olika hårdvara på maskinerna. Men hur hopplöst är SQL-Server om det inte klarar av olika hårdvara? Sv: Process 51 generated fatal ....
Någon som har några ideer varför inte samma sql funkar i vissa sql-servrar och inte i andra?
(Jag stänger tråden om ett par dar om inget kommer upp....)
/BennySv:Process 51 generated fatal ....
Den undre har SP3.
Det kan vara en viktig skillnad. Testa att lägga på SP3 på båda och se vad som händer.
MEN!!! Teoretiskt borde det bara sluta funka på båda, så det är kanske inte så jättekul...
Jag har inte kollat på din sp-kod, men det är ju där problemet ligger - om man kör SP3 (gissar jag)
/mickeSv: Process 51 generated fatal ....
Som jag sa tidigare så tror jag att ditt fel beror på antingen en bugg eller trasig hårdvara, eller kanske en kombination. Men eftersom det inte är samma varsion av SQL Server (tvärtemot vad du sa) så lutar det väl åt att det är en bugg i SP3 eftersom felet inte uppstår i RTM.
Testa att verifiera om problemet ligger i SP3 genom att uppgradera och/eller nedgradera maskinerna. Uppstår felet även i Query Analyzer? Här (http://support.microsoft.com/default.aspx?scid=kb;en-us;888799#kb1-1) kan du se vilka buggar som kommer att lösas i SP4, och om du kontaktar Microsoft kan du nog få tillgång till betan på SP4 och testa om problemet löses av det. Det finns flera listade buggar som skulle kunna vara det problem du upplever här. Har tabellen några triggers? Har maskinen flera processorer?
Som sagt är det ganska klart att det är en bugg, och lösningen är antagligen att öppna ett supportärende hos Microsoft alt att vänta på SP4.Sv:Process 51 generated fatal ....
Sv: Process 51 generated fatal ....
Men när jag skriptatde "create database" på båda databaserna såg jag att de hade lite olika defaultvärden.
Vad jag har testat hitils så fungerar sedan jag scriptade om även skapandet av databasen och inte skapar den i "SQL Server Enterprice Manager" .Sv:Process 51 generated fatal ....
/mickeSv: Process 51 generated fatal ....
<code>
CREATE DATABASE [mva_test] ON (NAME = N'mva_test_dat', FILENAME = N'C:\Program\Microsoft SQL Server\MSSQL\data\mva_test.mdf' , SIZE = 2, FILEGROWTH = 10%) LOG ON (NAME = N'mva_test_log', FILENAME = N'C:\Program\Microsoft SQL Server\MSSQL\data\mva_test.ldf' , SIZE = 2, FILEGROWTH = 10%)
COLLATE Finnish_Swedish_CI_AS
GO
exec sp_dboption N'mva_test', N'autoclose', N'false'
GO
exec sp_dboption N'mva_test', N'bulkcopy', N'true'
GO
exec sp_dboption N'mva_test', N'trunc. log', N'true'
GO
exec sp_dboption N'mva_test', N'torn page detection', N'true'
GO
exec sp_dboption N'mva_test', N'read only', N'false'
GO
exec sp_dboption N'mva_test', N'dbo use', N'false'
GO
exec sp_dboption N'mva_test', N'single', N'false'
GO
exec sp_dboption N'mva_test', N'autoshrink', N'false'
GO
exec sp_dboption N'mva_test', N'ANSI null default', N'false'
GO
exec sp_dboption N'mva_test', N'recursive triggers', N'false'
GO
exec sp_dboption N'mva_test', N'ANSI nulls', N'false'
GO
exec sp_dboption N'mva_test', N'concat null yields null', N'false'
GO
exec sp_dboption N'mva_test', N'cursor close on commit', N'false'
GO
exec sp_dboption N'mva_test', N'default to local cursor', N'false'
GO
exec sp_dboption N'mva_test', N'quoted identifier', N'false'
GO
exec sp_dboption N'mva_test', N'ANSI warnings', N'false'
GO
exec sp_dboption N'mva_test', N'auto create statistics', N'true'
GO
exec sp_dboption N'mva_test', N'auto update statistics', N'true'
GO
</code>
den fungerande:
<code>
CREATE DATABASE [mva] ON (NAME = N'mva_Data', FILENAME = N'C:\Program\Microsoft SQL Server\MSSQL\data\mva_Data.MDF' , SIZE = 3, FILEGROWTH = 10%) LOG ON (NAME = N'mva_Log', FILENAME = N'C:\Program\Microsoft SQL Server\MSSQL\data\mva_Log.LDF' , SIZE = 1, FILEGROWTH = 10%)
COLLATE SQL_Latin1_General_CP1_CI_AS
GO
exec sp_dboption N'mva', N'autoclose', N'false'
GO
exec sp_dboption N'mva', N'bulkcopy', N'false'
GO
exec sp_dboption N'mva', N'trunc. log', N'false'
GO
exec sp_dboption N'mva', N'torn page detection', N'true'
GO
exec sp_dboption N'mva', N'read only', N'false'
GO
exec sp_dboption N'mva', N'dbo use', N'false'
GO
exec sp_dboption N'mva', N'single', N'false'
GO
exec sp_dboption N'mva', N'autoshrink', N'false'
GO
exec sp_dboption N'mva', N'ANSI null default', N'false'
GO
exec sp_dboption N'mva', N'recursive triggers', N'false'
GO
exec sp_dboption N'mva', N'ANSI nulls', N'false'
GO
exec sp_dboption N'mva', N'concat null yields null', N'false'
GO
exec sp_dboption N'mva', N'cursor close on commit', N'false'
GO
exec sp_dboption N'mva', N'default to local cursor', N'false'
GO
exec sp_dboption N'mva', N'quoted identifier', N'false'
GO
exec sp_dboption N'mva', N'ANSI warnings', N'false'
GO
exec sp_dboption N'mva', N'auto create statistics', N'true'
GO
exec sp_dboption N'mva', N'auto update statistics', N'true'
GO
</code>