Thursday, January 27, 2011

Default Value bei Stored Procedure TSQl

ALTER PROCEDURE testRaiseError
@Severity int =18
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

Raiserror('Test Raiserrror',@Severity,10)
END

Transaktionen und Fehlerbehandlung in TSQL

Beispiel Insert und Update in einer Transaktion, wenn eines fehlschlägt wird zurückgerollt und der Fehler weitergegeben


BEGIN TRAN T1
BEGIN TRY
--write all values to mcit.auditrail (@UserId)
INSERT INTO [AuditTrail] ([ActionType],[ObjectType],[ObjectId],[OldValues],[NewValues],[UserId])
SELECT 'Update','Products',Id,CONVERT(Nvarchar(MAX),Price),CONVERT(Nvarchar(MAX),Price*@PriceFact),@UserId
from product where [year]=@Year and SupplierGroupId=@SupplierGroupId and IsDeleted=0


update mcit.product set Price=Price*@PriceFact where [year]=@Year and SupplierGroupId=@SupplierGroupId and IsDeleted=0
END TRY
BEGIN CATCH
print 'Fehler in Transaktion aufgetreten - Rolle zurück'
ROLLBACK TRAN T1

DECLARE @MSG NVARCHAR(MAX) SET @MSG=ERROR_MESSAGE()
DECLARE @SEV INT SET @SEV=ERROR_SEVERITY()
DECLARE @STA INT SET @STA=ERROR_STATE()
RAISERROR (@MSG,@SEV,@STA)
RETURN
END CATCH
COMMIT TRAN T1

END

Monday, January 24, 2011

MSI entpacken mittels MSIEXEC

msiexec /a DATEINAME.msi /qn TARGETDIR="PFAD"
wichtig: Rargetidrpfad muss nicht existieren, darf aber nicht das msi file enthalten