Using Cursors:
DECLARE @date_key INT
DECLARE date_cursor CURSOR FOR
SELECT date_key FROM dim_date WHERE [year] = 2013 ORDER BY date_key
OPEN date_cursor
FETCH NEXT FROM date_cursor INTO @date_key
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @date_key
--Insert code by @date_key here
FETCH NEXT FROM date_cursor INTO @date_key
END
CLOSE date_cursor
DEALLOCATE date_cursor
Showing posts with label SQL Server. Show all posts
Showing posts with label SQL Server. Show all posts
Thursday, 20 June 2013
Friday, 26 April 2013
Collation Conflict between databases (tempdb and user databases)
Msg 468, Level 16, State 9, Line 21
Cannot resolve the collation conflict between "Latin1_General_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation.
Use the COLLATE DATABASE_DEFAULT suffix on VARCHAR columns:
SELECT *
FROM hif_dim_account AS a
INNER JOIN #temp_hierarchy AS t
ON t.account COLLATE DATABASE_DEFAULT = a.account COLLATE DATABASE_DEFAULT
INNER JOIN hif_dim_hierarchy AS h ON h.business_description COLLATE DATABASE_DEFAULT = t.business_description COLLATE DATABASE_DEFAULT
Tuesday, 9 April 2013
SQL Server System Information returned by SERVERPROPERTY()
Copied from a post on SQLserverCentral.com by Gokhan Varol.
http://www.sqlservercentral.com/scripts/87561/
SET ANSI_WARNINGS OFF
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
DECLARE
@SqlPath NVARCHAR(255),
@InstName VARCHAR(16) = @@SERVICENAME,
@value_name NVARCHAR(20),
@LoginMode_Value INT,
@LoginMode NVARCHAR(15),
@RegLoc VARCHAR(100),
@ProcessorInfo VARCHAR(256)
--#region Retrieve Port Number
SET @RegLoc = CASE WHEN @InstName = 'MSSQLSERVER' THEN 'Software\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib\Tcp\' ELSE 'Software\Microsoft\Microsoft SQL Server\' + @InstName + '\MSSQLServer\SuperSocketNetLib\Tcp\' END
DECLARE
@RegRead TABLE(
VALUE VARCHAR(4000),
DATA VARCHAR(4000))
INSERT INTO @RegRead(
Value,
Data)
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE', @RegLoc, 'tcpPort';
--#endregion
--#region Get processor description from Windows Registry
EXEC xp_instance_regread 'HKEY_LOCAL_MACHINE', 'HARDWARE\DESCRIPTION\System\CentralProcessor\0', 'ProcessorNameString', @ProcessorInfo OUTPUT, N'no_output'
--#endregion
--#region Find Service Accounts
DECLARE
@ServicePath NVARCHAR(256) = N'SYSTEM\CurrentControlSet\Services\' + CASE
WHEN @@SERVICENAME = 'MSSQLSERVER' THEN 'MSSQLSERVER'
ELSE 'MSSQL$' + @@SERVICENAME
END,
@AgentServicePath NVARCHAR(256) = N'SYSTEM\CurrentControlSet\Services\' + CASE
WHEN @@SERVICENAME = 'MSSQLSERVER' THEN 'SQLSERVERAGENT'
ELSE 'SQLAgent$' + @@SERVICENAME
END,
@MSSQLServiceAccountName VARCHAR(256),
@SQLAgentServiceAccountName VARCHAR(256)
EXECUTE master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', @AgentServicePath, N'ObjectName', @SQLAgentServiceAccountName OUTPUT, N'no_output'
EXECUTE master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', @ServicePath, N'ObjectName', @MSSQLServiceAccountName OUTPUT, N'no_output'
--#endregion
--#region Retrieve Security
IF @InstName IS NULL
SET @RegLoc = 'SOFTWARE\Microsoft\MSSQLServer\MSSQlServer\SuperSocketNetLib\Tcp'
ELSE
SET @RegLoc = 'SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL'
EXEC master..xp_regread @rootkey = 'HKEY_LOCAL_MACHINE', @key = @RegLoc, @value_name = @InstName, @value = @SqlPath OUTPUT
IF @InstName IS NULL
SET @RegLoc = 'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQLServer\'
ELSE
SET @RegLoc = 'SOFTWARE\Microsoft\Microsoft SQL Server\' + @sqlpath + '\MSSQLServer\'
EXEC master..xp_regread @rootkey = 'HKEY_LOCAL_MACHINE', @key = @RegLoc, @value_name = 'LoginMode', @value = @LoginMode_Value OUTPUT
IF @LoginMode_Value = 1
SET @LoginMode = 'Windows'
IF @LoginMode_Value = 2
SET @LoginMode = 'Mixed'
--#endregion
--#region Get System Manufacturer and model number from
IF OBJECT_ID('tempdb..#SystemManufacturer')IS NOT NULL
DROP TABLE
#SystemManufacturer
CREATE TABLE #SystemManufacturer(
LogDate DATETIME NOT NULL,
ProcessInfor VARCHAR(256),
Text VARCHAR(MAX)NOT NULL)
INSERT INTO #SystemManufacturer
EXEC xp_readerrorlog 0, 1, "Manufacturer";
--#endregion
;
WITH sysInfo
AS (SELECT
cpu_count,
hyperthread_ratio,
sqlserver_start_time,
(SELECT
ISNULL(CAST(NULLIF(DATEDIFF(HOUR, sqlserver_start_time, GETDATE()) / 24, 0)AS VARCHAR) + ' days ', '') + RIGHT('0' + CAST(DATEDIFF(MINUTE, StartDateTime, GETDATE()) / 60 % 24 AS VARCHAR), 2) + ':' + RIGHT('0' + CAST(DATEDIFF(MINUTE, StartDateTime, GETDATE()) % 60 AS VARCHAR), 2) + ':' + RIGHT('0' + CAST(DATEDIFF(second, StartDateTime, GETDATE()) % 60 AS VARCHAR), 2)
FROM(SELECT
DATEDIFF(DAY, sqlserver_start_time, GETDATE())AS DayDiff)AS dd
CROSS APPLY(SELECT
CASE
WHEN DayDiff > 1 THEN DATEADD(DAY, DayDiff - 1, sqlserver_start_time)
ELSE sqlserver_start_time
END AS StartDateTime)AS b)AS SystemUpTime,
total_physical_memory_kb / 1024 AS TotalPhysicalMemoryMB,
available_physical_memory_kb / 1024 AS AvailPhysicalMemoryMB,
system_memory_state_desc AS SystemMemoryState,
physical_memory_in_use_kb / 1024 AS MemInUseMB,
memory_utilization_percentage AS [MemUtil%]
FROM sys.dm_os_sys_memory AS sm(NOLOCK)
CROSS JOIN sys.dm_os_process_memory AS pm(NOLOCK)
CROSS JOIN sys.dm_os_sys_info AS si(NOLOCK))
SELECT
CONVERT(VARCHAR(128), SERVERPROPERTY('Servername'))AS Servername,
CONVERT(VARCHAR(128), SERVERPROPERTY('MachineName'))AS MachineName,
CONVERT(VARCHAR(128), SERVERPROPERTY('InstanceName'))AS InstanceName,
@LoginMode AS AuthenticationMode,
@MSSQLServiceAccountName AS SQLServiceAccount,
@SQLAgentServiceAccountName AS SQLAgentServiceAccount,
(SELECT
CASE
WHEN ISNUMERIC(Data) = 1 THEN CAST(Data AS INT)
END
FROM @RegRead)AS Port,
CONVERT(VARCHAR(128), SERVERPROPERTY('ComputerNamePhysicalNetBIOS'))AS ComputerNamePhysicalNetBIOS,
CASE
WHEN CONVERT(VARCHAR(128), SERVERPROPERTY('IsClustered')) = 1 THEN 'Clustered'
WHEN SERVERPROPERTY('IsClustered') = 0 THEN 'Not Clustered'
WHEN SERVERPROPERTY('IsClustered') = NULL THEN 'Error'
END AS IsClustered,
(SELECT TOP 1
Text
FROM #SystemManufacturer)AS SystemManufacturer,
@ProcessorInfo AS ProcessorInfo,
s.*,
CONVERT(INT, SERVERPROPERTY('ProcessId'))AS ProcessId,
CONVERT(INT, SERVERPROPERTY('IsSingleUser'))AS IsSingleUser,
CONVERT(VARCHAR(128), SERVERPROPERTY('ProductVersion'))AS ProductVersion,
CONVERT(VARCHAR(128), SERVERPROPERTY('ProductLevel'))AS ProductLevel,
CONVERT(VARCHAR(128), SERVERPROPERTY('ResourceLastUpdateDateTime'))AS ResourceLastUpdateDateTime,
CONVERT(VARCHAR(128), SERVERPROPERTY('ResourceVersion'))AS ResourceVersion,
CASE
WHEN SERVERPROPERTY('IsIntegratedSecurityOnly') = 1 THEN 'Integrated security'
WHEN SERVERPROPERTY('IsIntegratedSecurityOnly') = 0 THEN 'Not Integrated security'
END AS IsIntegratedSecurityOnly,
CASE
WHEN SERVERPROPERTY('EngineEdition') = 1 THEN 'Personal Edition'
WHEN SERVERPROPERTY('EngineEdition') = 2 THEN 'Standard Edition'
WHEN SERVERPROPERTY('EngineEdition') = 3 THEN 'Enterprise Edition'
WHEN SERVERPROPERTY('EngineEdition') = 4 THEN 'Express Edition'
END AS EngineEdition,
CONVERT(VARCHAR(128), SERVERPROPERTY('LicenseType'))AS LicenseType,
CONVERT(VARCHAR(128), SERVERPROPERTY('NumLicenses'))AS NumLicenses,
CONVERT(VARCHAR(128), SERVERPROPERTY('BuildClrVersion'))AS BuildClrVersion,
CONVERT(VARCHAR(128), SERVERPROPERTY('Collation'))AS Collation,
CONVERT(VARCHAR(128), SERVERPROPERTY('CollationID'))AS CollationID,
CONVERT(VARCHAR(128), SERVERPROPERTY('ComparisonStyle'))AS ComparisonStyle,
CASE
WHEN CONVERT(VARCHAR(128), SERVERPROPERTY('EditionID')) = -1253826760 THEN 'Desktop Edition'
WHEN SERVERPROPERTY('EditionID') = -1592396055 THEN 'Express Edition'
WHEN SERVERPROPERTY('EditionID') = -1534726760 THEN 'Standard Edition'
WHEN SERVERPROPERTY('EditionID') = 1333529388 THEN 'Workgroup Edition'
WHEN SERVERPROPERTY('EditionID') = 1804890536 THEN 'Enterprise Edition'
WHEN SERVERPROPERTY('EditionID') = -323382091 THEN 'Personal Edition'
WHEN SERVERPROPERTY('EditionID') = -2117995310 THEN 'Developer Edition'
WHEN SERVERPROPERTY('EditionID') = 610778273 THEN 'Enterprise Evaluation Edition'
WHEN SERVERPROPERTY('EditionID') = 1044790755 THEN 'Windows Embedded SQL'
WHEN SERVERPROPERTY('EditionID') = 4161255391 THEN 'Express Edition with Advanced Services'
END AS ProductEdition,
CASE
WHEN CONVERT(VARCHAR(128), SERVERPROPERTY('IsFullTextInstalled')) = 1 THEN 'Full-text is installed'
WHEN SERVERPROPERTY('IsFullTextInstalled') = 0 THEN 'Full-text is not installed'
WHEN SERVERPROPERTY('IsFullTextInstalled') = NULL THEN 'Error'
END AS IsFullTextInstalled,
CONVERT(VARCHAR(128), SERVERPROPERTY('SqlCharSet'))AS SqlCharSet,
CONVERT(VARCHAR(128), SERVERPROPERTY('SqlCharSetName'))AS SqlCharSetName,
CONVERT(VARCHAR(128), SERVERPROPERTY('SqlSortOrder'))AS SqlSortOrderID,
CONVERT(VARCHAR(128), SERVERPROPERTY('SqlSortOrderName'))AS SqlSortOrderName
FROM sysInfo AS s
GO
Row Counts for All Tables in a Database
IF OBJECT_ID('tempdb..#T','U') IS NOT NULL DROP TABLE #T
GO
CREATE TABLE #T (TableName nvarchar(500),NumberOfRows int)
GO
INSERT INTO #T
EXEC sp_msForEachTable 'SELECT PARSENAME(''?'', 1) as TableName,COUNT(*) as NumberOfRows FROM ?'
GO
SELECT * FROM #T ORDER BY NumberOfRows DESC
GO
CREATE TABLE #T (TableName nvarchar(500),NumberOfRows int)
GO
INSERT INTO #T
EXEC sp_msForEachTable 'SELECT PARSENAME(''?'', 1) as TableName,COUNT(*) as NumberOfRows FROM ?'
GO
SELECT * FROM #T ORDER BY NumberOfRows DESC
Search Schema for Text (eg. column names)
SELECT DISTINCT OBJECT_NAME(id) AS ObjectName
FROM syscomments WHERE [text] LIKE '%business_day%'
ORDER BY 1
FROM syscomments WHERE [text] LIKE '%business_day%'
ORDER BY 1
Select Date Formats Using CONVERT() Function
SELECT date_key
,date
,DAY(date) AS month
,MONTH(date) AS month
,YEAR(date) AS year
,CONVERT(CHAR(4),date,100) + CONVERT(CHAR(4),date,120) AS a
,CONVERT(CHAR(10),date,103) AS b
,CONVERT(CHAR(11),date,113) AS c
,CONVERT(CHAR(10),date,120) AS d
,CONVERT(CHAR(11),date,112) AS e
FROM dim_date
WHERE year = 2012
Concatenate Using FOR XML
SELECT STUFF((
SELECT ',' AS [text()], CAST(month_name AS NVARCHAR(30)) AS [text()]
--SELECT *
FROM dim_date
WHERE date >= '2013-01-31' AND date <= '2013-12-31' AND date = last_day_of_month
FOR XML PATH('')
), 1, 1, '') AS months
SELECT ',' AS [text()], CAST(month_name AS NVARCHAR(30)) AS [text()]
--SELECT *
FROM dim_date
WHERE date >= '2013-01-31' AND date <= '2013-12-31' AND date = last_day_of_month
FOR XML PATH('')
), 1, 1, '') AS months
List of Month Names Using CTE
WITH CTEMonth
AS
(
SELECT 1 AS month_number
UNION ALL
SELECT month_number + 1 FROM CTEMonth WHERE month_number <= 11
)
SELECT month_number,DATENAME(MONTH, DATEADD(MONTH, month_number, 0) - 1) [month_name] FROM CTEMonth
AS
(
SELECT 1 AS month_number
UNION ALL
SELECT month_number + 1 FROM CTEMonth WHERE month_number <= 11
)
SELECT month_number,DATENAME(MONTH, DATEADD(MONTH, month_number, 0) - 1) [month_name] FROM CTEMonth
Subscribe to:
Posts (Atom)