SQL sp_recompile EXEC <stored procedure …etc.> WITH RECOMPILE UPDATE STATISTICS sp_updatestats CREATE of ALTER <stored procedure> WITH RECOMPLIE SECURITY PLAN System Stored Procedures: sp_helprotect Fixed Server Roles: sysadmin securityadmin serveradmin setupadmin processadmin diskadmin dbcreator bulkadmin System Administrators Security Administrators Server Administrators Setup Administrators Process Administrators Disk Administrators Database Creators Bulk Insert Administrators Fixed Database Roles: db_accessadmin db_backupoperator db_datareader db_datawriter db_ddladmin db_denydatareader db_denydatawriter db_owner db_securityadmin public PRIVILEGES DELETE INSERT REFERENCES SELECT UPDATE STORED PROCEDURES sp_server_info sp_helpfile EXECUTE master.dbo.sp_MSforeachdb 'use [?] exec sp_helpfile' sp_who sp_table_privileges 317469385 pagina 1 van 15 sp_tables sp_tables @table_owner = 'dbo' sp_tables @table_type = "'TABLE'" sp_tables @table_name = '%naam%' sp_stored_procedures sp_stored_procedures @sp_name = '%naam%' sp_columns sp_pkeys sp_fkeys sp_helpdb sp_help sp_helptext [naam van view of stored procedure] sp_dboption Geeft een’ lijst met alle mogelijke opties sp_dboption ’ Naam van Database’ Geeft alle opties die zijn geactiveerd sp_grantlogin sp_grantlogin [username] sp_addsrvrolemember 'username', 'sysadmin' sp_denylogin sp_revokelogin sp_helplogins sp_spaceused sp_addapprole sp_helplanguage sp_helplanguage @language = @@LANGUAGE ABBREVIATIONS SARG DSS OLTP DTS MARS search argument Decision Support System Online Transaction Processing Data Transformation Services Multiple Active Record Sets SETTABLE DATABASE OPTIONS (sp_dboption) ANSI null default 317469385 pagina 2 van 15 ANSI nulls ANSI padding ANSI warnings arithabort auto create statistics auto update statistics autoclose autoshrink concat null yields null cursor close on commit db chaining dbo use only default to local cursor merge publish numeric roundabort offline published quoted identifier read only recursive triggers select into/bulkcopy single user subscribed torn page detection trunc. log on chkpt. STATEMENTS GRANT SELECT ON Orders TO Accounting sp_addapprole OrderApp, secret – secret is het wachtwoord GRANT ALL ON Orders To OrderApp XML DECLARE @idoc INT DECLARE @doc NVARCHAR(1000) SET @doc = '<Root> <Customers CustomerID = "0123" CompanyName = "ABC"> <Orders OrderID = "2345" OrderDate = "2001-05-01" > <OrderDetails ProductID = "10" Quantity = "20"/> <OrderDetails ProductID = "11" Quantity = "30"/> </Orders> <Orders OrderID = "3456" OrderDate = "2001-05-03" > <OrderDetails ProductID = "12" Quantity = "50"/> <OrderDetails ProductID = "13" Quantity = "80"/> </Orders> </Customers> <Customers CustomerID = "0456" CompanyName = "CDE"> <Orders OrderID = "4567" OrderDate = "2001-05-03" > <OrderDetails ProductID = "10" Quantity = "75"/> <OrderDetails ProductID = "11" Quantity = "26"/> 317469385 pagina 3 van 15 </Orders> <Orders OrderID = "5678" OrderDate = "2001-05-07" > <OrderDetails ProductID = "12" Quantity = "86"/> <OrderDetails ProductID = "13" Quantity = "72"/> </Orders> </Customers> </Root>' EXEC sp_xml_preparedocument @idoc OUTPUT, @doc SELECT * FROM OPENXML (@idoc, 'Root/Customers/Orders/OrderDetails') WITH ( CustomerID INT '../../@CustomerID' , CompanyName NVARCHAR(20) '../../@CompanyName' , OrderID INT '../@OrderID' , OrderDate DATETIME '../@OrderDAte' , ProductID INT , Quantity INT ) EXEC sp_xml_removedocument @idoc GO OPLETTEN! Een alias kan alleen in de FROM clause worden toegekend. INSTALLEREN VOORBEELD DATABASES Microsoft SQL Server Community Projects & Samples http://codeplex.com/SqlServerSamples AdventureWorks SQL Server 2005 Samples and Sample Databases http://www.microsoft.com/downloads/details.aspx?FamilyId=E719ECF7-9F46-4312-AF896AD8702E4E6E&displaylang=en AdventureWorks SQL Server 2005 SP2a http://www.codeplex.com/MSFTDBProdSamples/Release/ProjectReleases.aspx?ReleaseId=4004 Downloads & Files AdventureWorksDB.msi source code, 28053K, uploaded May 7 2007 - 264277 downloads AdventureWorksDBCI.msi source code, 29177K, uploaded May 7 2007 - 36956 downloads AdventureWorksBI.msi source code, 7393K, uploaded May 7 2007 - 60642 downloads AdventureWorksBICI.msi 317469385 pagina 4 van 15 source code, 16764K, uploaded May 7 2007 - 19580 downloads AdventureWorksLT.msi source code, 2251K, uploaded May 7 2007 - 42111 downloads Release Notes Sample Databases for Microsoft SQL Server 2005 SP2 licensed with the MS-PL license. These installers require you to manually attach the database after installation. See the Release Notes for details. AdventureWorksDB is the Adventure Works Cycles OLTP sample databases. AdventureWorksBI is the Adventure Works Data Warehouse and Analysis Services database project. AdventureWorksLT is a very simple sample database based on the Adventure Works Cycles OLTP sample database. The CI versions of some of the databases use a case-insensitive collation, as does the AdventureWorksLT sample database. The others are case-sensitive. AdventureWorks installeren op SQL Server 2008 Microsoft SQL Server Management Studio Complete (expires in 180 days) 10.0.2531.0 Microsoft Analysis Services Client Tools 10.0.3798.0 Microsoft Data Access Components (MDAC) 6.0.6002.18005 Microsoft MSXML 4.0 5.0 6.0 Microsoft Internet Explorer 8.0.6001.18928 Microsoft .NET Framework 2.0.50727.4200 Operating System 6.0.6002 AdventureWorks2008_SR4.exe uitvoeren Dit programma kopieert een aantal bestanden naar de folder: C:\Program Files\Microsoft SQL Server\100\tools\Samples, o.a. het bestand DatabaseInstaller.exe. Het uitvoeren van dat laatste bestand zorgt er voor dat de diverse databases van AdventureWorks geïnstalleerd worden. DATE and TIME ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.en/s10de_6tsql/html/83e378a2-6e89-4c80-bc4f644958d9e0a9.htm#DateandTimeFunctions ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.en/s10de_1devconc/html/3b078d5b-526c-4884-906ae4442805795f.htm#UsingOperatorswithDateandTimeDataTypes DECLARE @datetime DATETIME = '20081020' DECLARE @datetime DATETIME = STR(YEAR(GETDATE())) + '-' + STR(MONTH(GETDATE())) + '-' + STR(DAY(GETDATE())) 317469385 pagina 5 van 15 datepart Abbreviations year yy, yyyy quarter qq, q month mm, m dayofyear dy, y day dd, d week wk, ww weekday dw, w hour hh minute mi, n second ss, s millisecond ms microsecond mcs nanosecond ns SELECT DATEPART(WEEK, GETDATE()) SELECT DATEPART(WEEK, '20081231') SELECT SELECT SELECT SELECT 317469385 DATEDIFF(YEAR, '19550110', GETDATE()) AS 'JAREN' DATEDIFF(MONTH, '19550110', GETDATE()) AS 'MAANDEN' DATEDIFF(WEEK, '19550110', GETDATE()) AS 'WEKEN' DATEDIFF(DAY, '19550110', GETDATE()) AS 'DAGEN' pagina 6 van 15 ssms.exe /? Login Authentication Mode Er zijn twee vormen van Server authentication: Windows Authentication mode SQL Server and Windows Authentication mode Windows Authentication is de default. Microsoft SQL Server Management Studio, Object Explorer, Server name, Properties, Security page, Server authentication Provides information about logins and the users associated with them in each database. sp_helplogins [login name] Stored Procedures sp_help [name stored procedure] Geeft dbowner en parameters sp_helptext [name stored procedure] Geeft tekst van stored procedure Primary Key, Foreign Key sp_pkeys [table name] sp_fkeys [table name] sp_helpconstraint [table name] SELECT * FROM sys.server_role_members 317469385 pagina 7 van 15 sp_helpsrvrole EXECUTE EXECUTE EXECUTE EXECUTE EXECUTE EXECUTE EXECUTE EXECUTE sp_helpsrvrolemember sp_helpsrvrolemember sp_helpsrvrolemember sp_helpsrvrolemember sp_helpsrvrolemember sp_helpsrvrolemember sp_helpsrvrolemember sp_helpsrvrolemember sysadmin securityadmin serveradmin setupadmin processadmin diskadmin dbcreator bulkadmin EXECUTE EXECUTE EXECUTE EXECUTE EXECUTE EXECUTE EXECUTE EXECUTE sp_srvrolepermission sp_srvrolepermission sp_srvrolepermission sp_srvrolepermission sp_srvrolepermission sp_srvrolepermission sp_srvrolepermission sp_srvrolepermission sysadmin securityadmin serveradmin setupadmin processadmin diskadmin dbcreator bulkadmin SELECT * FROM sys.sql_logins sp_tables @table_type = "'TABLE'" WAITFOR DELAY '00:00:01' SELECT OBJECT_NAME(OBJECT_ID) AS NameofConstraint , SCHEMA_NAME(schema_id) AS SchemaName , OBJECT_NAME(parent_object_id) AS TableName , type_desc AS ConstraintType FROM sys.objects WHERE type_desc LIKE '%CONSTRAINT' SELECT s.name AS TABLE_SCHEMA , o.name AS TABLE_NAME , c.name AS COLUMN_NAME , d.name AS CONSTRAINT_NAME FROM sys.default_constraints d JOIN sys.objects o ON o.object_id = d.parent_object_id JOIN sys.columns c ON c.object_id = o.object_id AND c.column_id = d.parent_column_id JOIN sys.schemas s ON s.schema_id = o.schema_id ORDER BY [TABLE_NAME] Add Linked Servers Ms-Access DECLARE @SERVER VARCHAR(50) SET @SERVER = N'SqlDb' EXEC sp_dropserver @SERVER EXEC sp_addlinkedserver @SERVER = N'SqlDb', 317469385 pagina 8 van 15 @PROVIDER = N'Microsoft.Jet.OLEDB.4.0', @SRVPRODUCT = N'OLE DB Provider for Jet', @DATASRC = N'c:\apps\sources\SqlDB.mdb' GO SELECT * FROM SqlDb...snippets Ms-Excel DECLARE @SERVER VARCHAR(50) SET @SERVER = N'ExcelData' EXEC sp_dropserver @SERVER EXEC sp_addlinkedserver @SERVER = N'ExcelData', @PROVIDER = N'Microsoft.Jet.OLEDB.4.0', @SRVPRODUCT = N'Excel', @DATASRC = N'C:\Users\jmond\Documents\Excel Data.xls', @PROVSTR = N'Excel 8.0' GO SELECT * FROM ExcelData...Blad1$ CSV DECLARE @SERVER VARCHAR( 50 ) SET @SERVER = N'MyArchive' EXEC sp_dropserver @SERVER EXEC sp_addlinkedserver @SERVER = N'MyArchive', @PROVIDER = N'Microsoft.Jet.OLEDB.4.0', @SRVPRODUCT = N'OLE DB Provider for Jet (Text IISAM)', @DATASRC = N'C:\Users\jmond\Documents\csv\', @PROVSTR = N'Text' GO INSERT INTO MyArchive...MyData#csv ( DataCol1, DataCol2 ) SELECT CompanyName AS Col1, ContactName AS Col2 FROM Customers SELECT * FROM MyArchive...MyData#csv C:\Users\jmond\Documents\csv\MyData.csv: Col1 Col2 317469385 pagina 9 van 15 C:\Users\jmond\Documents\csv\sxchema.ini: [MyData.csv] ColNameHeader=True Format=TABDelimited MaxScanRows=0 CharacterSet=ANSI Col1=DataCol1 Char Col2=DataCol2 Char Uitzoeken http://support.microsoft.com/kb/290415 en Format csvDelimited TABDelimited http://www.eggheadcafe.com/software/aspnet/30132294/how-to-query-a-csv-file-i.aspx ????? EXEC sp_configure 'show advanced options', 1; GO RECONFIGURE; GO EXEC sp_configure 'Ad Hoc Distributed Queries', 1; GO RECONFIGURE; GO select * from OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)}; DefaultDir=C:\myfolder;','select top 10 * from myfile.csv') GO !!!! Schema.ini File (Text File Driver) http://msdn.microsoft.com/en-us/library/ms709353(VS.85).aspx All Sorts EXEC [sp_Msforeachtable] 'SELECT * FROM ?;' EXEC [sp_Msforeachtable] 'PRINT ''?'';' SELECT * FROM [sys].[schemas] SELECT * FROM [sys].[tables] 317469385 pagina 10 van 15 Queries Query met Grouping Sets SELECT SUM(TotalDue) AS 'Total Sales' , DATEPART(YEAR, OrderDate)AS 'By Year' , DATEPART(MONTH, OrderDate) AS 'By Month' , DATEPART(WEEKDAY, OrderDate) AS 'By Weekday' FROM Sales.SalesOrderHeader WHERE YEAR(OrderDate) IN('2003', '2004') GROUP BY GROUPING SETS ( (DATEPART(YEAR, OrderDate)) , (DATEPART(MONTH, OrderDate)) , (DATEPART(WEEKDAY, OrderDate)) , ( DATEPART(YEAR, OrderDate) , DATEPART(MONTH, OrderDate) , DATEPART(WEEKDAY, OrderDate) ) ) ORDER BY DATEPART(YEAR, OrderDate) , DATEPART(MONTH, OrderDate) , DATEPART(WEEKDAY, OrderDate) Get the Create Scripts for all Stored Procedures DECLARE @procName VARCHAR(100) DECLARE @getprocName CURSOR SET @getprocName = CURSOR FOR SELECT Name = '[' + SCHEMA_NAME(SCHEMA_ID) + '].[' + Name + ']' FROM [sys].[all_objects] WHERE TYPE = 'P' AND [is_ms_shipped] = 0 OPEN @getprocName FETCH NEXT FROM @getprocName INTO @procName WHILE @@FETCH_STATUS = 0 BEGIN --PRINT 'EXEC [sp_HelpText] ' + @procName EXECUTE [sp_helptext] @procName FETCH NEXT FROM @getprocName INTO @procName END CLOSE @getprocName DEALLOCATE @getprocName GO 317469385 pagina 11 van 15 Database readonly Right Click database -> properties -> options State -> database readonly -> false Microsoft SQL Server Management Studio -- Menu-balk, SSMS Tools, Text Format Short cuts Format Text Info Start Debugging CTRL + K, CTRL + G ALT + F1 (sp_help) ALT + F5 Columns headers in the result set -- Menu-balk, Query, Query Options… Window: Query Options - Results -- Text Checkbox: Include columns headers in the result set Create Database with Login and User USE [master] CREATE DATABASE [databasename] -- DROP DATABASE [databasename] CREATE LOGIN [loginname] WITH PASSWORD = 'uß3rn@m3' -- DROP LOGIN [username] EXEC sp_addsrvrolemember @loginame = 'login', @rolename = 'role' EXEC [sp_helpsrvrole] @srvrolename = N'role' USE [databasename] CREATE USER [username] FOR LOGIN [username] -- DROP USER [username] FOR LOGIN [username] EXECUTE [sp_addrolemember] @rolename = N'db_owner' , @membername = [username] -- EXECUTE [sp_removerolemember] @rolename = N'db_owner' -, @membername = [username] EXEC [sp_helpuser] @name_in_db = N'username' EXEC [sp_helprolemember] @rolename = N'role' EXEC [sp_defaultdb] @loginame = [username], @defdb = [databasename] Zie ook: Microsoft SQL Server roles http://www.mssqlcity.com/Articles/Adm/SQL70Roles.htm 317469385 pagina 12 van 15 Wizard ASP.NET SQL Server-installatie %windir%\\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe Query meerdere selecties van één veld uit een tabel naast elkaar CREATE PROCEDURE [dbo].[shoporder_select_overview] AS SELECT YEAR(so.[ord_createdate]) AS [year] , MONTH(so.[ord_createdate]) AS [month] , SUM(so.[ord_total]) AS [total_paid_or_sent] , ISNULL ( ( SELECT SUM([ord_total]) FROM [dbo].[shoporder] WHERE YEAR([ord_createdate]) = YEAR(so.[ord_createdate]) AND MONTH([ord_createdate]) = MONTH(so.[ord_createdate]) AND [ord_statusnr] = 32 ) , 0 ) AS [total_refund] , ISNULL ( ( SELECT SUM([ord_total]) FROM [dbo].[shoporder] WHERE YEAR([ord_createdate]) = YEAR(so.[ord_createdate]) AND MONTH([ord_createdate]) = MONTH(so.[ord_createdate]) AND [ord_statusnr] = 16 ) , 0 ) AS [total_returned] FROM [dbo].[shoporder] so WHERE so.[ord_statusnr] IN (2, 4) GROUP BY YEAR(so.[ord_createdate]), MONTH(so.[ord_createdate]) ORDER BY YEAR(so.[ord_createdate]), MONTH(so.[ord_createdate]) EXEC [sp_detach_db] @dbname = N'AdventureWorks'; EXEC [sp_attach_db] @dbname = N'AdventureWorks' , @filename1 = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf' , @filename2 = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_log.ldf'; Optimization 317469385 pagina 13 van 15 Transact-SQL Optimization Tips http://www.databasejournal.com/features/mssql/article.php/1437391/Transact-SQL-Optimization-Tips.htm Tips, Tricks, and Advice from the SQL Server Query Optimization Team http://blogs.msdn.com/queryoptteam/ Lengthy SQL Server Queries Will Consume Your CPU http://www.mssqltips.com/tip.asp?tip=1500 Version SELECT @@version EXEC master..xp_msver Microsoft SQL Server Management Studio Bij iedere query staat recht onderin op de statusbalk het aantal rijen. Triggers SELECT sys.objects.name AS [trigger] , sys.tables.name AS [table] , sys.objects.type , sys.schemas.name AS [schema] , * FROM sys.schemas RIGHT OUTER JOIN sys.tables ON sys.schemas.schema_id = sys.tables.schema_id RIGHT OUTER JOIN sys.objects ON sys.tables.object_id = sys.objects.parent_object_id WHERE sys.objects.type = 'tr' SELECT O.name , O.type , S.name AS [schema] , OP.name AS parent_name , OP.type AS parent_type , SP.name AS parent_schema FROM sys.schemas AS SP RIGHT OUTER JOIN sys.objects AS OP ON SP.schema_id = OP.schema_id RIGHT OUTER JOIN sys.objects AS O LEFT OUTER JOIN sys.schemas AS S ON O.schema_id = S.schema_id ON OP.object_id = O.parent_object_id WHERE O.type = 'TR' ORDER BY O.type Hello, I can not understand the use of Deny and Revoke, what is the difference? very basic definitions: Let's say you give me SELECT permission on table TEST. If you DENY me SELECT on TEST, I still have SELECT permission, I just can't use it. If you REVOKE my SELECT permission, I can't use it because I don't have it. 317469385 pagina 14 van 15 Functions CREATE FUNCTION [dbo].[fun_GETDATE_1]() RETURNS DATETIME AS BEGIN RETURN GETDATE() END SELECT [dbo].[fun_GETDATE_1]() –- Geeft: 2010-08-29 09:29:06.143 maar SELECT [dbo].[fun_GETDATE_1] -- Geeft: The multi-part identifier "dbo.fun_GETDATE_1" could not be bound. DECLARE @mydatetime DATETIME; SELECT @mydatetime = [dbo].[fun_GETDATE_1]() SET @mydatetime = [dbo].[fun_GETDATE_1]() SELECT @mydatetime How to set the default database on login EXEC [sp_defaultdb] @loginame = [<loginname>], @defdb = [<databasename>] Current database: SELECT DB_NAME() 317469385 pagina 15 van 15