随笔分类 - mssql
摘要:--链接服务器"LINK_110"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "该伙伴事务管理器已经禁止了它对远程/网络事务的支持。"。--消息 7391,级别 16,状态 2,第 4 行--无法执行该操作,因为链接服务器 "LINK_110" 的 OLE DB 访问接口 "SQLNCLI10" 无法启动分布式事务。
阅读全文
摘要:SQL Server 2008中SQL应用系列--目录索引 如果是在SQL 2000中,我们需要读取分层结构数据时,不得不借助递归。在SQL server 2005中,我们可以使用CTE,当然,好的数据结构设计可以避免你使用CTE,请看这里:http://www.cnblogs.com/downmoon/archive/2009/10/23/1588405.html如果你是一个数据库设计新手,那么在sql server 2008中可以使用新的原生分层结构数据hierarchyid。关于它的详细说明,请看MSDN:http://msdn.microsoft.com/zh-cn/library/b
阅读全文
摘要:简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能。但索引可以在大多数情况下大大提升查询性能,在OLAP中尤其明显.要完全理解索引的概念,需要了解大量原理性的知识,包括B树,堆,数据库页,区,填充因子,碎片,文件组等等一系列相关知识,这些知识写一本小书也不为过。所以本文并不会深入讨论这些主题。索引是什么 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。 精简来说,索引是一种结构.在SQL Server中,索引和表(这里指的是加了聚集索引的表)的存储结构是一样的,都是B树,B树是一
阅读全文
摘要:create procedure SP_GET_TABLE_INFO @ObjName varchar(128) /* The table to generate sql script */as declare @Script varchar(255)declare @ColName varchar(30)declare @ColID TinyIntdeclare @UserType smallintdeclare @TypeName sysnamedeclare @Length smallintdeclare @Prec smallintdeclare @Scale smallintdecl
阅读全文
摘要:SET NOCOUNT ON DECLARE @tbname VARCHAR(30)SET @tbname = '用户档案'DECLARE @columns TABLE ( id INT, NAME VARCHAR(30) )INSERT @columns SELECT ROW_NUMBER() OVER ( ORDER BY columns.object_id ) id, columns.NAME FROM sys.columns JOIN sys.objects ON columns.obje...
阅读全文
摘要:昨天有人在群里讨论SQL Server返回最后一个标识值的三个函数:IDENT_CURRENT、@@IDENTITY、SCOPE_IDENTITY,在些作个标记和小结。 其实MSDN对此有官方解释:这三个函数都返回最后生成的标识值。 但是,上述每个函数中定义的“最后”的作用域和会话有所不同。 1、IDENT_CURRENT 返回为某个会话和当前作用域中的指定表生成的最新标识值。 如果 IDENT_CURRENT 值为 NULL(因为表从未包含行或已被截断),IDENT_CURRENT 函数将返回种子值。 2、@@IDENTITY 返回为跨所有作用域的当前会话中的某个表生成的最新标识值。...
阅读全文
摘要:MS SQL Server:DDL触发器DDL触发器 (本文转摘于网络)1. DDL Trigger触发事件总汇:在创建用来监视并响应该数据库或服务器实例中的活动的事件通知时,可以指定相应事件类型或事件组。DDL_DATABASE_LEVEL_EVENTS包括: DDL_TRIGGER_EVENTS, DDL_FUNCTION_EVENTS, DDL_SYNONYM_EVENTS, DDL_SSB_EVENTS, DDL_DATABASE_SECURITY_EVENTS, DDL_EVENT_NOTIFICATION_EVENTS, DDL_PROCEDURE_EVENTS, ...
阅读全文
摘要:CREATE TABLE [dbo].[Student2]([StuID] [int] NULL,[StuNum] [varchar](50) SPARSE NULL,[StuNamePY] [varchar](50) SPARSE NULL,[StuNameWB] [varchar](50) SPARSE NULL,[StuName] [varchar](50) SPARSE NULL,[IDNumber] [varchar](18) SPARSE NULL,[FileNo] [varchar](50) SPARSE NULL,[DocType] [varchar](50) SPARSE N
阅读全文
摘要:declare @TableType varchar(max) = ''declare @tablename varchar(max)set @tablename='student'select @TableType=@TableType+case when types.name in ('varchar','nvarchar','char','nchar','varbinary')then 'declare @'+columns.name+''+
阅读全文
摘要:在做SQL Server 2005 的群集维护时, 碰到了这样一个问题:当资源组在一个节点上的时候, 用sa登录数据库, 从management studio中查看用户数据库的属性, 正常; 但是将资源组转移到另一个节点时, 用sa登录数据库, 从management studio中查看用户数据库的属性, 却报如下错误:标题: Microsoft SQL Server Management Studio------------------------------无法显示请求的对话框。------------------------------其他信息:无法显示请求的对话框。 (SqlMgmt)
阅读全文
摘要:在论坛上看到这样一个帖子, 原文如下:在我的SQL Server2008R2上, 试了一下, 果然是这样, 转换成numeric时报错..看样子很奇怪, 明明函数ISNUMBERIC的返回值是1, 但是转换却不成功, 为什么呢?查了一下BOL, 发现如下的解释:ISNUMBERIC函数判断表达式是否是以下类型之一:intrealnumericbigintmoneysmallintsmallmoneytinyintfloatdecimal看样子ISNUMBERIC不只判断是否是NUMBERIC类型, 也判断其他如money等类型.试了一下转换成money型, 结果就没有报错, 语句如下:SELE
阅读全文
摘要:-得到事务回滚,数据库备份/还原预计需要的时间SELECT session_id --回滚的进程ID, 可以用dbcc inputbuffer (spid) 来查询进程所做的操作 ,start_time--进程开始command的时间 ,status--进程状态 ,Command--进程执行的命令 ,DB_NAME(database_id) AS 'database_name'--进程涉及的数据库 ,USER_NAME(user_id) AS 'USER_NAME'--提交进程的用户 ,blocking_session_id--阻塞该进程的进程ID ,wait_
阅读全文
摘要:前几天碰到一个问题, SQL Server 2008 SP2 上的一个检查数据库完整性的维护计划失败了, 这个维护计划没有过任何的修改.先查看一下执行这个维护计划的job的历史, 有类似以下的报错:Executing query "DECLARE @Guid UNIQUEIDENTIFIER EXECUTE msdb..sp...".: 100% completeEnd Progress DTExec: The package execution returned DTSER_FAILURE (1).Started: 10:14:30 AM Finished : 10:14
阅读全文
摘要:set nocount ondeclare @lock table(spid int,dbid int,objid int,indid int,type varchar(6),resource varchar(max),mode varchar(200),status varchar(200))declare @loclinfo table(EventType varchar(max),Parameters int,EventInfo varchar(max))declare @sql table (sql varchar(max))insert @lock exec sys.sp_lock;
阅读全文
摘要:declare @TableType varchar(max) =''declare @tablename varchar(max)set @tablename='student'select @TableType=@TableType +case when types.name in ('varchar','nvarchar','char','nchar','varbinary') then '['+columns.name+']'+'
阅读全文
摘要:最近在项目中进行压力测试遇到了数据库的死锁问题,简言之,如下的代码在 SERIALIZABLE 隔离级别造成了死锁:?1234567891011121314SELECT @findCount=COUNT(id) FROM MyTableWHERE [fk_related_id]=@ArgumentIF (@findCount > 0)BEGINROLLBACK TRANSACTIONRETURN ERROR_CODEENDINSERT INTO MyTable ([fk_related_id],…)VALUES (@Argument,…)COMMIT TRANSACTIONRETURN
阅读全文
摘要:CLR函数脚本---------------------------------------------------------------------------------using System;using System.Data;using System.Data.SqlClient;using System.Data.SqlTypes;using Microsoft.SqlServer.Server;using System.Collections;/// <summary>/// 用户自定CLR 函数,用来生成一个序列/// </summary>public
阅读全文
摘要:“在 master 数据库中记录的数据库所有者 SID 与在数据库 '**' 中记录的数据库所有者 SID 不同。应该通过使用 ALTER AUTHORIZATION 语句重置数据库 '*' 的所有者来更正此情况。 ” 解决:Sp_changedbowner 'sa',true --sa为需要使用的用户名,在相应的数据库中执行即可
阅读全文
摘要:一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值 对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中keyvalue键值对均为 object类型,所以Hashtable可以支持任何类型的keyvalue键值对.二,哈希表的简单操作在哈希表中添加一个keyvalue键值对:HashtableObject.Add(key,value);在哈希表中去除某个keyvalue键值对:Hashtabl
阅读全文
摘要:Float and RealApproximate-number data types for use with floating point numeric data. Floating point data is approximate; therefore, not all values in the data type range can be represented exactly. The ISO synonym forrealisfloat(24).Data typeRangeStoragefloat- 1.79E+308 to -2.23E-308, 0 and 2.23E-3
阅读全文