Sql Server实用操作小技巧集合

 更新时间:2016年11月25日 16:40  点击:1770
(一)挂起操作
在安装Sql或sp补丁的时候系统提示之前有挂起的安装操作,要求重启,这里往往重启无用,解决办法:
到HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Manager
删除PendingFileRenameOperations
(二)收缩数据库
--重建索引
DBCC REINDEX
DBCC INDEXDEFRAG
--收缩数据和日志
DBCC SHRINKDB
DBCC SHRINKFILE
(三)压缩数据库
dbcc shrinkdatabase(dbname)
(四)转移数据库给新用户以已存在用户权限
exec sp_change_users_login 'update_one','newname','oldname'
go
(五)检查备份集
RESTORE VERIFYONLY from disk='E:dvbbs.bak'
(六)修复数据库
ALTER DATABASE [dvbbs] SET SINGLE_USER
GO
DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK
GO
ALTER DATABASE [dvbbs] SET MULTI_USER
GO
--CHECKDB 有3个参数:
--REPAIR_ALLOW_DATA_LOSS
-- 执行由 REPAIR_REBUILD 完成的所有修复,包括对行和页进行分配和取消分配以改正分配错误、结构行或页的错误,以及删除已损坏的文本对象。这些修复可能会导致一些数据丢失。修复操作可以在用户事务下完成以允许用户回滚所做的更改。如果回滚修复,则数据库仍会含有错误,应该从备份进行恢复。如果由于所提供修复等级的缘故遗漏某个错误的修复,则将遗漏任何取决于该修复的修复。修复完成后,备份数据库。
 
--REPAIR_FAST 进行小的、不耗时的修复操作,如修复非聚集索引中的附加键。这些修复可以很快完成,并且不会有丢失数据的危险。
 
--REPAIR_REBUILD 执行由 REPAIR_FAST 完成的所有修复,包括需要较长时间的修复(如重建索引)。执行这些修复时不会有丢失数据的危险。
 
--DBCC CHECKDB('dvbbs') with NO_INFOMSGS,PHYSICAL_ONLY


方法一
declare @max integer,@id integer
declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) > 1
open cur_rows
fetch cur_rows into @id,@max
while @@fetch_status=0
begin
select @max = @max -1
set rowcount @max
delete from 表名 where 主字段 = @id
fetch cur_rows into @id,@max
end
close cur_rows
set rowcount 0
方法二
有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
1、对于第一种重复,比较容易解决,使用
select distinct * from tableName
就可以得到无重复记录的结果集。
如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp
发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。
2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下
假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
select identity(int,1,1) as autoID, * into #Tmp from tableName
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)
最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)


方法一
一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大
1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如论坛数据库Forum)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存
2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定
3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作方法同第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据
方法二
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE tablename -- 要操作的数据库名
SELECT @LogicalFileName = 'tablename_log', -- 日志文件名
@MaxMinutes = 10, -- Limit on time allowed to wrap log.
@NewSize = 1 -- 你想设定的日志文件的大小(M)
-- Setup / initialize
DECLARE @OriginalSize int
SELECT @OriginalSize = size
FROM sysfiles
WHERE name = @LogicalFileName
SELECT 'Original Size of ' db_name() ' LOG is '
CONVERT(VARCHAR(30),@OriginalSize) ' 8K pages or '
CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) 'MB'
FROM sysfiles
WHERE name = @LogicalFileName
CREATE TABLE DummyTrans
(DummyColumn char (8000) not null)
DECLARE @Counter INT,
@StartTime DATETIME,
@TruncLog VARCHAR(255)
SELECT @StartTime = GETDATE(),
@TruncLog = 'BACKUP LOG ' db_name() ' WITH TRUNCATE_ONLY'
DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
-- Wrap the log if necessary.
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)
  1.检查你是否使用了最新的Sql Server service pack   
  这是因为在最新的Sql Server service pack中已经修补了很多Sql Server使用警告(Alerts)的漏洞。你应该确保在你的系统中已经安装了最新的Sql Server service pack补丁包。
   
  2.检查SqlServerAgent服务的帐户是否作为成员运行在域用户群组(Domain User Group)下  LocalSystem帐户它没有访问网络的权限。所以,如果你需要将事件记录在其他运行有Windows NT或Windows 2000机器上的应用程序日志上,或者你的作业(jobs)需要跨网络的资源,或者你需要通过e-mail或者pagers通知操作者,这时候,你就需要将SalServerAgent服务的帐户设置在域用户群组(Domain User Group)下作为它的成员。
   
  3.如果所定义的警报都没有触发,检查SqlServerAgent和EventLog服务是否都在运行如果你需要让你定义的警报被触发,这些服务必须被开启。所以,如果这些服务没有被运行的话,请运行它们。
 
  4.如果有某个警报没有被触发,请确保它们是否被启用警报可以被启用或禁用,为了检查一个警报是否被启用,你应该做以下这些步骤:  
  1) 运行Sql Server Enterprise Manager   
  2)请打开服务器群组,然后打开某个服务器   
  3)请打开管理(Management),然后再打开Sql Server Agent  
  4)双击合适的警报以查看这个警报是否被启用了   
  5)检查警报的历史值以确定警报最后工作的日期和时间
  为了检查一个警报的历史值,你应该做以下这些事情:   
  1) 运行Sql Server Enterprise Manager   
  2) 请打开服务器群组,然后打开某个服务器   
  3) 请打开管理(Management),然后再打开Sql Server Agent   
  4) 双击合适的警报以查看警报的历史值   
  6.核对每20秒维护的计数器值   
  因为Sql Server Agent每20秒间隔维护一个性能计数器,如果发现这个性能计数器只有几秒钟(少于20秒)才维护一次,那么极有可能你的这个警报将不会被触发。
   
  7.检查Sql Server错误日志,Sql Server Agent错误日志以及Windows NT和Windows 2000的应用程序日志以获得有关错误描述的更多详细信息仔细检查核对当产生警报失败事件时,被记录在Sql Server错误日志,Sql Server Agent错误日志以及Windows NT和Windows 2000的应用程序日志中的日期和时间以及对错误的描述能帮助你分析产生警报失败事件的原因。
   
  8.如果警报被触发了,但是这时候操作员却没有收到任何通知,请尝试手动使用"e-mail","pager"或者用"net send"将信息发送给操作员在很多情况下,你输入了一个错%C


将Mysql数据库转换为MSsql的数据库,或者将Mssql数据库转换为Mysql的数据库,在NT环境下很多时候都会用到。使用MySql ODBC后就比较好办,可以使用MSSQL7的管理工具,也可以使用mysql的管理工具,更可以使用其它方的管理工具
这里介绍一个使用SQL7的MMC的方法 ,将MSsql7的数据转化为Mysql的数据库,将源和目的反之,就可以将Mysql的数据库转化为Mssql7的数据库。
 
1.安装Mysql的ODBC接口,可以在本站下载
2.建立Mysql的DSN,可以建系统DSN,这里命名testmysql,填写IP,dababase,用户名口令等项,完成
3.在SQL7的MMC中,选择要导出的数据库,右键选择All Tasks->Export Datas...
4.开始DTS Export Wizerd...,
Choose a Data Source:Microsoft OLE DB Privoder for SQL Server
server:你的MSsql7数据库的服务器
是否使用NT认证和用户名口令看你自己的了
最后选择一个Database,如:mynews(你自己要导到mysql中的数据库)
下一步
5.Choose a Destination:选Mysql
User/System DSN,如果建立过就选择,如果没有建立就新建。
 
6.Specify Table Copy or Query
Copy table(s) from the source database,从源数据库拷贝表开始
7.Select Source Table
选择要拷贝的表,如果不想仔细调整,就选择全部吧。
 
8.Run immediately,当然要立即执行,下一步再选完成,就开始转换。
 
这个转换有时一部分表可能要失败,双击失败的表格,看看什么原因,一般是SQL7的数据类型问题,作一些小的修改就应该可以了。
 
使用MySql ODBC后就比较好办,可以使用MSSQL7的管理工具,也可以使用mysql的管理工具,更可以使用其它方的管理工具
这里介绍一个使用SQL7的MMC的方法
1.安装Mysql的ODBC接口,可以在本站下载
2.建立Mysql的DSN,可以建系统DSN,这里命名testmysql,填写IP,dababase,用户名口令等项,完成
3.在SQL7的MMC中,选择要导出的数据库,右键选择All Tasks->Export Datas...
4.开始DTS Export Wizerd...,
Choose a Data Source:Microsoft OLE DB Privoder for SQL Server
server:你的MSsql7数据库的服务器
是否使用NT认证和用户名口令看你自己的了
最后选择一个Database,如:mynews(你自己要导到mysql中的数据库)
下一步
5.Choose a Destination:选Mysql
[!--infotagslink--]

相关文章

  • photoshop打开很慢怎么办 ps打开慢的设置技巧

    photoshop软件是一款专业的图像设计软件了,但对电脑的要求也是越高越好的,如果配置一般打开ps会比较慢了,那么photoshop打开很慢怎么办呢,下面来看问题解决办法。 1、...2016-09-14
  • Jquery Ajax Error 调试错误的技巧

    JQuery使我们在开发Ajax应用程序的时候提高了效率,减少了许多兼容性问题,我们在Ajax项目中,遇到ajax异步获取数据出错怎么办,我们可以通过捕捉error事件来获取出错的信息。在没给大家介绍正文之前先给分享Jquery中AJAX参...2015-11-24
  • php语言中使用json的技巧及json的实现代码详解

    目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它。我写过一篇《数据类型和JSON格式》,探讨它的设计思想。今天,我想总结一下PHP语言对它的支持,这是开发互联网应用程序(特别是编写API)必须了解的知识...2015-10-30
  • 基于PHP给大家讲解防刷票的一些技巧

    刷票行为,一直以来都是个难题,无法从根本上防止。但是我们可以尽量减少刷票的伤害,比如:通过人为增加的逻辑限制。基于 PHP,下面介绍防刷票的一些技巧:1、使用CURL进行信息伪造$ch = curl_init(); curl_setopt($ch, CURLOP...2015-11-24
  • js实现跨域的4种实用方法原理分析

    什么是js跨域呐?js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。要...2015-10-30
  • 图解Sublime Text3使用技巧

    通过本篇文章给大家介绍Sublime Text3使用技巧的相关知识,对sublime text3技巧相关知识感兴趣的朋友一起学习吧...2015-12-24
  • js实现跨域的4种实用方法原理分析

    什么是js跨域呐?js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。要...2015-10-30
  • 分享12个非常实用的JavaScript小技巧

    这篇文章主要介绍了分享12个非常实用的JavaScript小技巧,这些小技巧可能在你的实际工作中或许能帮助你解决一些问题,需要的朋友可以参考下...2016-05-14
  • Python爬虫必备技巧详细总结

    本篇文章介绍了我在爬虫过程中总结的几个必备技巧,都是经过实验的,通读本篇对大家的学习或工作具有一定的价值,需要的朋友可以参考下...2021-10-22
  • Illustrator像素级完美绘制经验技巧分享

    今天小编在这里就来给Illustrator的这一款软件的使用者们来说一说像素级完美绘制的经验技巧,各位想知道具体信息的使用者们,那么下面就快来跟着小编一起看一看。 给...2016-09-14
  • 前端开发必知的15个jQuery小技巧

    本文主要介绍了前端开发必知的15个jQuery小技巧。具有很好的参考价值,下面跟着小编一起来看下吧...2017-01-26
  • MySQL中的binlog相关命令和恢复技巧

    操作命令:复制代码 代码如下:show binlog events in 'mysql-bin.000016' limit 10;reset master 删除所有的二进制日志flush logs 产生一个新的binlog日志文件show master logs; 或者 show binary logs; 查看二进制文...2014-05-31
  • MySQL编程中的6个实用技巧

    每一行命令都是用分号(;)作为结束对于MySQL,第一件你必须牢记的是它的每一行命令都是用分号(;)作为结束的,但当一行MySQL被插入在PHP代码中时,最好把后面的分号省略掉,例如: 复制代码 代码如下: mysql_query("INSERT INTO...2015-03-15
  • mysql中coalesce()的使用技巧小结

    在mysql中,其实有不少方法和函数是很有用的,这次介绍一个叫coalesce的,拼写十分麻烦,但其实作用是将返回传入的参数中第一个非null的值,下面这篇文章主要给大家介绍了在mysql中coalesce()使用技巧的相关资料,需要的朋友可以参考下。...2017-06-21
  • c# Linq常用的小技巧

    这篇文章主要介绍了c# Linq常用的小技巧,文中讲解非常详细,示例代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-11-03
  • CSS不得不掌握的技巧【清除float浮动】

    本文我们来讲讲CSS必备掌握的重点:清除float浮动clear,掌握此内容,可以让你在css+div布局中,一些浮动问题得心应手。 一、浮动产生原因 一般浮动是什么情况呢?一般是...2016-09-14
  • 每日十条JavaScript经验技巧(一)

    本文是每日十条JavaScript经验技巧系列文章的第一篇,给大家汇总介绍一些在JavaScript使用过程中的注意事项,非常的简单,都是个人在平时项目中的一点小小的总结,希望对大家能够有所帮助...2016-06-24
  • 如何写软文?软文写法技巧

    我们很多人都感觉软文的力量强大,如春风化雨,润物细无声!等你发现这是一篇软文的时候,已经完了,因为你至少脑海中有这种印象了!对于软文来说,这是一种成功! 很多人写软...2016-10-10
  • PHP编程常用技巧四则

    PHP编程常用技巧四则:   1.配置PHP文件目录   作为服务器端解释执行的脚本语言,PHP程序放置在某个服务器可以访问的目录下,一般可以通过修改Apache的httpd.conj...2016-11-25
  • MySql Sql 优化技巧分享

    这篇文章主要介绍了MySql Sql 优化技巧分享,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2017-03-14