随笔分类 - DataBase
存储过程生成POCO
摘要:下面我们演示使用T-SQL写的一个存储过程,生成C#的POCO代码: CREATE PROCEDURE usp_TableToClass /* Generates C# class code for a table and fields/properties for each column. Run as "Results to Text" or...
阅读全文
SQLServer中列出数据库的所有表的创建时间
摘要:下面这个存储过程将列出数据库的所有表的创建时间: Create proc usp_alldatabases as begin declare @script as nvarchar(2000) if exists(select 1 from sysobjects where name='tab_alltables') drop table tab_allta...
阅读全文
T-Sql 实现类似访问数组变量的操作
摘要:目前T-SQL不支持Array这种类型,大多数情况我们需要用游标来实现。除了游标后我们还可以用临时表,这里我们演示使用表变量来实现,直接看下来的T-SQL: --Then "iterate" through it executing the necessary SQL from those values. --This will allow you to have 0 ...
阅读全文
SQL SERVER 获取当前服务器数据库备份信息
摘要:在SQL SERVER 获取当前服务器数据库备份信息,包括数据库名称,备份类型,恢复模式,时间等。 执行下面T-SQL: --Last Full, Diff, and Log backup taken with recovery model--Get the most recent Full backup taken SELECT T1.Name AS DatabaseName...
阅读全文
实用T-SQL之生成当前索引数据库中的外键上
摘要:下面的T-SQL可以生成索引在当前数据库的外键上, 可以帮助我们找回外键上丢失的索引,查看索引命名是否规范。 -- declare memory tableDECLARE @INDEX_TABLE TABLE( primary_key INT IDENTITY(1,1) NOT NULL, schema_name NVARCHAR(100), table...
阅读全文
SQL Server简洁查询正在运行的进程
摘要:通常我们可以使用 sp_who2 我们希望更加简洁的信息,下面这个查询使用系统表sys.sysprocesses,以及sys.dm_exec_sql_text做OUTER APPLY. T-SQL是这样的: SELECT spid, blocked, DB_NAME(sp.dbid) AS DBNam...
阅读全文
SQL Server2008中删除重复记录
摘要:在Database中可能由于某种原因如用户输入,导入数据失败等 导致了重复记录. 如果你没有用主键,约束,或来其它机制实现数据完整性,那最后总是重复记录在你的数据库中.现在让我们来看在SQL SERVER 2008中如何删除这些记录, 首先,可以模拟造一些简单重复记录: Create Table dbo.Employee ([Id] int Primary KEY , [Name] varcha...
阅读全文
SQL Server在用户自定义函数(UDF)中使用临时表
摘要:SQL Server在用户自定义函数中UDF使用临时表,这是不允许的. 有时是为了某些特殊的场景, 我们可以这样的实现: CREATE TABLE #temp (id INT)GOINSERT INTO #temp VALUES (1),(2),(3)GOCREATE SYNONYM temp_table_synonym FOR #tempGOCREATE FUNCTION fn_select_t...
阅读全文
SqlServer中BULK INSERT用法简介
摘要:首先,我们创建一张TABLE,如下面T-SQL脚本: 假设有这样的文本数据:下面这个语句不检查约束:这个是启用约束的:还可以使用FIRSTROW和LASTROW限制行数。如下COPY前三行:使用ERRORFILE选项 错误处理,如下记录到F:\error.txt关于BULK INSERT,请参考MSDN。希望对您开发有帮助。作者:Petter Liu 出处:http://www.cnblogs.c...
阅读全文
SqlServer2005连接之前的行
摘要:Common Table Expressions (CTEs)和Row_number()函数提供了我们一种优雅的解决方案.下面我们来假设一个常见的场景.零售商一张产品(Items)表,还有一张历史价格(PriceHistory)表.数据如下: 产品表 ItemId PriceStartDate Price1 2004-03-01 00:00:00.000 250.001 2005-06-15 00...
阅读全文
SqlServer2005中使用row_number()在一个查询中删除重复记录
摘要:在SqlServer2005中,提供了一个row_number()的函数,我们经常用它做DataBase数据分页. 下面我们来看下,如何利用它来删除一个表中重复记录: 注意倒数第二句脚本,我们在一个查询实现这个功能.你可以自己执行T-SQL script 看效果.希望对您开发有帮助!作者:Petter Liu 出处:http://www.cnblogs.com/wintersun/ 本文版权归作者...
阅读全文
SqlServer中使用T-sql找出identity列
摘要:有没有方法找出DataBase中所有表的Identity列?可以的,有下面几种T-SQL可以实现:第一种方法:使用columnproperty函数: 第二种方法:使用sys.all_columns视图:第三种方法:使用identity_columns视图:希望这篇POST对您有帮助! 作者:Petter Liu 出处:http://www.cnblogs.com/wintersun/ 本文版权归作...
阅读全文
T-SQL使用DbMail发送多个附件
摘要:如果您不了解DbMail,先看sp_send_dbmail.具体的T-SQL如下: 注意你必须设置rowcount为0,希望对您有帮助。作者:Petter Liu 出处:http://www.cnblogs.com/wintersun/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 该文章也同时发布在我的独立博...
阅读全文
在T-SQL中使用正则表达式函数
摘要:有想过在T-Sql使用正则表达式吗?是的,完全可以的,我们可以用SQL SERVER CLR sql function来实现这一功能。 首先,我们在VSTS中创建一Database Project,增一个class, 实现下面的一个方法: 好了,Build后Deploy到你的Target database就OK了,VisualStudio会自动注册这个程序集的。如果,你想手动注册程序集,可执行以...
阅读全文
几个有用的T-SQL(1)
摘要:清除所有表记录,有点像RESET,保留constraints与identities. 2. 列出DB中表的大小,所占磁盘大小。3.清除指定DB的事务日志。开发过程中我们把DB的日志搞得很大当然另一个好主意是要备份它们:4.列出DB中表的数量:5.按当前时期备份DataBase,你可以用它当做JOB来执行。Author : Petter Liu http://wintersun.cnblogs.c...
阅读全文
SQL SERVER 2008 CTE生成结点的FullPath
摘要:SQL SERVER 2008 使用CTE是经常的事儿,有时我们想存储一些冗余数据,像每个结点的FullPath。好的,现在来看如何生成FullPath: DECLARE @tbl TABLE ( Id int ,ParentId int ) INSERT INTO @tbl ( Id, ParentId ) VALUES ( 0, NULL ) , ( 8, 0 ) , ( 12, 8 )...
阅读全文
SQLSERVER2008中CTE的Split与CLR的性能比较
摘要:之前曾有一篇POST是关于用CTE实现Split,这种方法已经比传统的方法高效了。今天我们就这个方法与CLR实现的Split做比较。在CLR实现Split函数的确很简单,dotnet framework本身就有这个function了。 我们新建一个DataBase project,然后建立一个UserDefinedFunctions,Code像这样: 1: /// <summary> ...
阅读全文
SQLSERVER中找出拙劣的约束,索引,外键
摘要:ShowColumnUsage是一个能呈现table中constraints, indexes, foreign keys所有影响的列存储过程。 例如我们执行: exec ShowColumnUsage 'BillOfMaterials'那么将返回这些信息:HeadingColumnNameConstraintsIndexesForeignKeysBillOfMaterialsBillOfMate...
阅读全文
SQLSERVER2008使用CTE转换string到Table
摘要:多少次我们会面临这样的问题:我们需要把一组ID的Array做为参数传给存储过程.在存储过程中能转换成Table后我们会更喜欢使用这种数据. 这里我们使用CTE来实现,例如我们有这样的字符串:'1,2,4,8',想转成这个table: T-sql: SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- ============================...
阅读全文
SQLSERVER系统表应用之基于Table生成存储过程参数列表
摘要:有时一个Table有很多列,你需要写一个存储过程,那个Table的参数列表够你写的了。我们可以利用系统表生成这个列表,看T-SQL: select '@' + c.name, col_definition = case t.namewhen 'bigint' then 'bigint,'when 'int' then 'int,'when 'smallint' then 'smallint,'wh...
阅读全文