by Damiaan Peeters
12. April 2008 14:38
Today, I couldn't attach a database of my previous pc to my new MSSQL Server installation.
I got this strange error message in Microsoft SQL Server Management Studio.
[more]
I got this error message:
Attach database failed for Server 'STELLA'. (Microsoft.SqlServer.Smo)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.3042.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Attach+database+Server&LinkId=20476
------------------------------
ADDITIONAL INFORMATION:
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
------------------------------
Unable to open the physical file "E:\MSSQL\InfoBase.mdf". Operating system error 5: "5(error not found)". (Microsoft SQL Server, Error: 5120)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.3054&EvtSrc=MSSQLServer&EvtID=5120&LinkId=20476
Solution
The solution was very easy. Launch Microsoft SQL Server Management Studio as Administrator.
by Damiaan Peeters
4. December 2007 14:11
DDL stands for Data definition language. Nothing new until now, you might know DDL as the alter, create and drop statements from SQL.
However, in Microsoft SQL Server 2005 it is possible to add triggers for these statements.
These kind of triggers allow you to audit these potentially dangerous statements:
CREATE TRIGGER safety
ON DATABASE
FOR CREATE_TABLE, DROP_TABLE, ALTER_TABLE
AS
PRINT 'You must disable Trigger "safety" to drop, create or alter tables!'
ROLLBACK ;
DDL triggers fire only in response to DDL events specified by Transact-SQL DDL syntax. System stored procedures that perform DDL-like operations are not supported.
To see a list of the triggers created (in the system catalog), you can use this statement
SELECT name,te.type_desc,te.type
FROM sys.triggers t
JOIN sys.trigger_events te on t.object_id = te.object_id
WHERE t.parent_class=0
AND name IN('ddlTestEvents1','ddlTestEvents2')
ORDER BY name,te.type_desc
Where ddlTestEvents1 and ddlTestEvents2 are of course the names of the events.
If you need to create for the 3 statements the same trigger, you can use
FOR DDL_TABLE_EVENTS
instead of all the individual events. You will observe the same effect in the triggers catalog.