Thứ Sáu, 15 tháng 1, 2016
Thứ Năm, 14 tháng 1, 2016
Drop and Re-Create All Foreign Key Constraints in SQL Server
Reference: https://www.mssqltips.com/sqlservertip/3347/drop-and-recreate-all-foreign-key-constraints-in-sql-server/
CREATE TABLE #x -- feel free to use a permanent table ( drop_script NVARCHAR(MAX), create_script NVARCHAR(MAX) ); DECLARE @drop NVARCHAR(MAX) = N'', @create NVARCHAR(MAX) = N''; -- drop is easy, just build a simple concatenated list from sys.foreign_keys: SELECT @drop += N' ALTER TABLE ' + QUOTENAME(cs.name) + '.' + QUOTENAME(ct.name) + ' DROP CONSTRAINT ' + QUOTENAME(fk.name) + ';' FROM sys.foreign_keys AS fk INNER JOIN sys.tables AS ct ON fk.parent_object_id = ct.[object_id] INNER JOIN sys.schemas AS cs ON ct.[schema_id] = cs.[schema_id]; INSERT #x(drop_script) SELECT @drop; -- create is a little more complex. We need to generate the list of -- columns on both sides of the constraint, even though in most cases -- there is only one column. SELECT @create += N' ALTER TABLE ' + QUOTENAME(cs.name) + '.' + QUOTENAME(ct.name) + ' ADD CONSTRAINT ' + QUOTENAME(fk.name) + ' FOREIGN KEY (' + STUFF((SELECT ',' + QUOTENAME(c.name) -- get all the columns in the constraint table FROM sys.columns AS c INNER JOIN sys.foreign_key_columns AS fkc ON fkc.parent_column_id = c.column_id AND fkc.parent_object_id = c.[object_id] WHERE fkc.constraint_object_id = fk.[object_id] ORDER BY fkc.constraint_column_id FOR XML PATH(N''), TYPE).value(N'.[1]', N'nvarchar(max)'), 1, 1, N'') + ') REFERENCES ' + QUOTENAME(rs.name) + '.' + QUOTENAME(rt.name) + '(' + STUFF((SELECT ',' + QUOTENAME(c.name) -- get all the referenced columns FROM sys.columns AS c INNER JOIN sys.foreign_key_columns AS fkc ON fkc.referenced_column_id = c.column_id AND fkc.referenced_object_id = c.[object_id] WHERE fkc.constraint_object_id = fk.[object_id] ORDER BY fkc.constraint_column_id FOR XML PATH(N''), TYPE).value(N'.[1]', N'nvarchar(max)'), 1, 1, N'') + ');' FROM sys.foreign_keys AS fk INNER JOIN sys.tables AS rt -- referenced table ON fk.referenced_object_id = rt.[object_id] INNER JOIN sys.schemas AS rs ON rt.[schema_id] = rs.[schema_id] INNER JOIN sys.tables AS ct -- constraint table ON fk.parent_object_id = ct.[object_id] INNER JOIN sys.schemas AS cs ON ct.[schema_id] = cs.[schema_id] WHERE rt.is_ms_shipped = 0 AND ct.is_ms_shipped = 0; UPDATE #x SET create_script = @create; PRINT @drop; PRINT @create; /* EXEC sp_executesql @drop -- clear out data etc. here EXEC sp_executesql @create; */
Thứ Sáu, 11 tháng 12, 2015
Thứ Tư, 4 tháng 11, 2015
Get DataTable using EF DbContext
public System.Data.DataTable GetDataTable(string sql) { DataTable dt = new DataTable(); var conn = DbContext.Database.Connection; var connectionState = conn.State; if (connectionState != ConnectionState.Open) conn.Open(); using (var cmd = conn.CreateCommand()) { cmd.CommandText = sql; using (var reader = cmd.ExecuteReader()) { dt.Load(reader); } } if (connectionState != ConnectionState.Open) conn.Close(); return dt; }
Thứ Tư, 28 tháng 10, 2015
Convert DataTable to CSV string
public static class DataTableExtension { public static string ToCSV(this DataTable dt) { StringBuilder sb = new StringBuilder(); for (int i = 0; i <= dt.Columns.Count - 1; i++) { sb.Append(dt.Columns[i].ColumnName); if (i < dt.Columns.Count - 1) { sb.Append(","); } } sb.AppendLine(); for (int i = 0; i <= dt.Rows.Count - 1; i++) { for (int j = 0; j <= dt.Columns.Count - 1; j++) { object o = dt.Rows[i][j]; if (o != null) { string value = o.ToString(); if (value.Contains(",")) { value = string.Concat("\"", value, "\""); } if (value.Contains("\r")) { value = value.Replace("\r", " "); } if (value.Contains("\n")) { value = value.Replace("\n", " "); } sb.Append(value); } if (j < dt.Columns.Count - 1) { sb.Append(","); } } sb.AppendLine(); } return sb.ToString(); } }
Thứ Năm, 22 tháng 10, 2015
InitCap function for SQL Server
CREATE FUNCTION [dbo].[InitCap] ( @InputString varchar(4000) ) RETURNS VARCHAR(4000) AS BEGIN DECLARE @Index INT DECLARE @Char CHAR(1) DECLARE @PrevChar CHAR(1) DECLARE @OutputString VARCHAR(255) SET @OutputString = LOWER(@InputString) SET @Index = 1 WHILE @Index <= LEN(@InputString) BEGIN SET @Char = SUBSTRING(@InputString, @Index, 1) SET @PrevChar = CASE WHEN @Index = 1 THEN ' ' ELSE SUBSTRING(@InputString, @Index - 1, 1) END IF @PrevChar IN (' ', ';', ':', '!', '?', ',', '.', '_', '-', '/', '&', '''', '(') BEGIN IF @PrevChar != '''' OR UPPER(@Char) != 'S' SET @OutputString = STUFF(@OutputString, @Index, 1, UPPER(@Char)) END SET @Index = @Index + 1 END RETURN @OutputString END GO
Reference: http://www.sql-server-helper.com/faq/oracle-functions-p01.aspx
Thứ Tư, 21 tháng 10, 2015
sp_refreshview
SELECT DISTINCT 'EXEC sp_refreshview ''' + name + '''' FROM sys.objects AS so INNER JOIN sys.sql_expression_dependencies AS sed ON so.object_id = sed.referencing_id WHERE so.type = 'V';
Reference: https://msdn.microsoft.com/en-us/library/ms187821.aspx
Đăng ký:
Bài đăng
(
Atom
)