15Microsoft SQL Server 数据库维护
Microsoft SQL Server 数据库维护
2.6.1数据库联机与脱机
--联机:该状态为数据库正常状态,也就是我们常看到的数据库的状态,该状态下的数据库处于可操作状态,可以对数据库进行任何权限内的操作。
ALTER DATABASE MyDataBase
SET ONLINE
--脱机:我们可以在Microsoft SQL Server Management中看到该数据库,但该数据库名称旁边有"脱机"的字样,说明该数据库现在虽然存在于数据库引擎实例中,但是不可以执行任何有效的数据操作,比如新增,修改,删除等,这就是脱机状态。
EXEC sp_dboption 'MyDataBase', 'offline', 'TRUE'
ALTER DATABASE MyDataBase
SET OFFLINE
--可疑:和"脱机"状态一样,我们可以在Microsoft SQL Server Management中看到该数据库,但该数据库名称旁边有"可疑"的字样,这说明至少主文件组可疑或可能已损坏。
如果需要暂时关闭某个数据库的服务或复制正在使用的原数据库,用户可以通过选择脱机方式来实现,脱机后在需要的时候可以暂时关闭数据库。
2.6.2数据库的收缩
--1.使用AUTO_SHRINK数据库选项设置自动收缩数据库
ALTER DATABASE MyDataBase SET AUTO_SHRINK ON
--2.DBCC SHRINKDATABASE(数据库名,百分比)百分比:即“收缩后文件中的最大可用空间”,取值范围“大于等于0, 小于100%”,实际使用中设为0即可。
DBCC SHRINKDATABASE(MyDataBase,target_percent)
--3.DBCC ShrinkFile
DBCC ShrinkFile(file_name,targetsize); /* 收缩数据库文件 */
DBCC ShrinkFile(file_log_name,targetsize); /* 收缩日志文件 */
--Targetsize:单位为兆,必须为整数,DBCC SHRINKFILE 尝试将文件收缩到指定大小。
--DBCC SHRINKFILE 不会将文件收缩到小于“实际使用的空间”大小,例如“分配空间”为10M,“实际使用空间”为6M,当制定targetsize为1时,则将该文件收缩到6M,不会将文件收缩到1M。
2.6.3分离数据库
/*
可以将数据库从实例中删除,同时确保数据库在其数据文件和事务日志文件中保持不变。
除了系统数据库外,其余的数据库都可以从服务器的管理中分离出来。
分离数据库不是删除数据库,只是从服务器中分离出来,保证了数据库的数据文件和日志文件完整无损。
分离注意事项:
数据库存在数据库快照时不能分离,在分离前,必须删除所有快照。
数据库正在被镜像时,不能被分离
分离数据库列表中各选项功能:
删除链接:表示是否断开与指定数据库的连接。
更新统计信息:表示在分离数据库之前是否更新过时的优化信息。
保留全文目录:表示是否与数据库相关联的所有全文目录,以用于全文索引。
*/
EXEC sp_detach_db MyDataBase
分离数据库: sp_detach_db;
2.6.4附加数据库
--附加数据库是指将当前数据库以外的数据库附加到当前数据库实例中
--将分离的数据库重新附加服务器中,但在附加数据库时必须指定主数据文件(MDF)的名称和物理位置。
use master
go
create database database_name
on
(filename='E:\AllMyWork\SqlServer\database_name.mdf')
for attach
附加数据库:sp_attach_db 后接表明,附加需要完整的路径名
2.6.5数据库快照
/*
数据库快照是一个只读、静态数据库视图,它是数据库恢复到特定时间点的有效途径。
一个数据库可能多个数据库快照。数据库快照一直保持和源数据库快照被创建的时刻一致。
所以首先,通过快照数据库恢复到创建快照时刻,比其他方法速度快,占用系统资源少。
其次,快照可作为用户保留一份可供读取的历史数据,如历年的客户订单信息。因为是只读的,可替代源数据库实现某些只需查询而
不需写入服务。快照命名时,建议名称中含有数据库名及快照创建时间。
*/
CREATE DATABASE databasename_datetime
ON
(name=database_name,
filename='E:\db\databasename_datetime.mdf'
)
as snapshot of database_name
Go
--恢复数据库快照
create database test_2011820
on
(name='test',
filename='e:\test\test_2011820.mdf'),
(name='sale2009',
filename='e:\test\sale2009_2011820.ndf'),
(name='sale2010',
filename='e:\test\sale2010_2011820.ndf'),
(name='sale2011',
filename='e:\test\sale2011_2011820.mdf'),
(name='sale2012',
filename='e:\test\sale2012_2011820.ndf'),
(name='sale2012_2',
filename='e:\test\sale2012_2_2011820.ndf'),
(name='sale2013',
filename='e:\test\sale2013_2011820.ndf')
as snapshot of test
restore database test
from database_snapshot='test_2011820'
--删除快照
Drop database 快照名
2.6.6数据库的备份
--使用T-SQL语句对数据库进行一次完全数据库备份。备份设备为:Pubs_bk。
USE Sales
GO
EXEC sp_addumpdevice ‘disk’,’pubs_bk’,’c:\sales.bak’
GO
BACKUP DATABASE Sales TO pubs_bk
2.6.7数据库还原恢复
--数据库文件若损坏了,就有必要进行还原该数据库的操作
USE master
RESTORE DATABASE Sales FROM pubs_bk
2.6.8数据库文件的导入导出
--可以使用BULK INSERT 语句按照用户指定的格式把大量数据插入到数据库的表中,这是批量加载数据的一种方式。
--FIELDTERMINATOR用于指定字段之间的分隔符,ROWTERMINATOR用于指定行之间的分隔符。
bulk insert test.dbo.tb1
from 'D:\SQLServer\tb1.txt'
with(fieldterminator=',',rowterminator='\n')
go
2.6.9数据库报表的配置及设计
5.1SELECT
--打卡记录输入到临时表
SELECT * INTO #CardRecord FROM(
SELECT
REPLACE(p.PersonnelID,char(9)+char(13)+char(10),'') 员工编号,
REPLACE(cast(p.PName as varchar(20)),char(9)+char(13)+char(10),'') 员工姓名,
REPLACE(cast(d.DeptName as varchar(20)),char(9)+char(13)+char(10),'') 员工部门,
CONVERT(varchar(50),DATEADD(DAY,-2,DATEADD(s,0,Work.RepotDate)),23) 打卡日期,
CAST(right(datename(weekday,convert(varchar(50),DATEADD(DAY,-2,DATEADD(s,0,Work.RepotDate)),120)),1) as varchar(10)) 星期,
case when Work.indate_1 in('-1','-2',NULL) or len(Work.indate_1)<=2 then '' when len(left(Work.indate_1,LEN(Work.indate_1)-2)+':'+right(Work.indate_1,2))=4 then '0'+left(Work.indate_1,LEN(Work.indate_1)-2)+':'+right(Work.indate_1,2) else left(Work.indate_1,LEN(Work.indate_1)-2)+':'+right(Work.indate_1,2) end 上午上班,
case when Work.OutDate_1 in('-1','-2',NULL) or len(Work.OutDate_1)<=2 then '' when len(left(Work.OutDate_1,LEN(Work.OutDate_1)-2)+':'+right(Work.OutDate_1,2))=4 then '0'+left(Work.OutDate_1,LEN(Work.OutDate_1)-2)+':'+right(Work.OutDate_1,2) else left(Work.OutDate_1,LEN(Work.OutDate_1)-2)+':'+right(Work.OutDate_1,2) end 上午下班,
case when Work.indate_2 in('-1','-2',NULL) or len(Work.indate_2)<=2 then '' when len(left(Work.indate_2,LEN(Work.indate_2)-2)+':'+right(Work.indate_2,2))=4 then '0'+left(Work.indate_2,LEN(Work.indate_2)-2)+':'+right(Work.indate_2,2) else left(Work.indate_2,LEN(Work.indate_2)-2)+':'+right(Work.indate_2,2) end 下午上班,
case when Work.OutDate_2 in('-1','-2',NULL) or len(Work.OutDate_2)<=2 then '' when len(left(Work.OutDate_2,LEN(Work.OutDate_2)-2)+':'+right(Work.OutDate_2,2))=4 then '0'+left(Work.OutDate_2,LEN(Work.OutDate_2)-2)+':'+right(Work.OutDate_2,2) else left(Work.OutDate_2,LEN(Work.OutDate_2)-2)+':'+right(Work.OutDate_2,2) end 下午下班,
case when Work.indate_3 in('-1','-2',NULL) or len(Work.indate_3)<=2 then '' when len(left(Work.indate_3,LEN(Work.indate_3)-2)+':'+right(Work.indate_3,2))=4 then '0'+left(Work.indate_3,LEN(Work.indate_3)-2)+':'+right(Work.indate_3,2) else left(Work.indate_3,LEN(Work.indate_3)-2)+':'+right(Work.indate_3,2) end 晚上上班,
case when Work.OutDate_3 in('-1','-2',NULL) or len(Work.OutDate_3)<=2 then '' when len(left(Work.OutDate_3,LEN(Work.OutDate_3)-2)+':'+right(Work.OutDate_3,2))=4 then '0'+left(Work.OutDate_3,LEN(Work.OutDate_3)-2)+':'+right(Work.OutDate_3,2) else left(Work.OutDate_3,LEN(Work.OutDate_3)-2)+':'+right(Work.OutDate_3,2) end 晚上下班,
case when Work.indate_4 in('-1','-2',NULL) or len(Work.indate_4)<=2 then '' when len(left(Work.indate_4,LEN(Work.indate_4)-2)+':'+right(Work.indate_4,2))=4 then '0'+left(Work.indate_4,LEN(Work.indate_4)-2)+':'+right(Work.indate_4,2) else left(Work.indate_4,LEN(Work.indate_4)-2)+':'+right(Work.indate_4,2) end 午夜上班,
case when Work.OutDate_4 in('-1','-2',NULL) or len(Work.OutDate_4)<=2 then '' when len(left(Work.OutDate_4,LEN(Work.indate_4)-2)+':'+right(Work.OutDate_4,2))=4 then '0'+left(Work.OutDate_4,LEN(Work.OutDate_4)-2)+':'+right(Work.OutDate_4,2) else left(Work.OutDate_4,LEN(Work.OutDate_4)-2)+':'+right(Work.OutDate_4,2) end 午夜下班,
case when Work.Earlyminute=0 then '' when Work.Earlyminute!=0 then cast(Work.Earlyminute as varchar(50)) end 早退分钟,
case when Work.Lateminute=0 then '' when Work.Lateminute!=0 then cast(Work.Lateminute as varchar(50)) end 迟到分钟,
case when p.Sex=0 then '男' when p.Sex=1 then '女' end 性别,
CONVERT(varchar(50),DATEADD(s,0,p.Birthday),23) 生日日期,
REPLACE(cast(w.WorkName as varchar(20)),char(9)+char(13)+char(10),'') 员工班次
FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=192.168.1.41;User ID=sa;Password=123lhm..'
).onecard.dbo.WorkDayRecord Work
LEFT JOIN OPENDATASOURCE(
'SQLOLEDB',
'Data Source=192.168.1.41;User ID=sa;Password=123lhm..'
).onecard.dbo.Personnel p ON Work.PersonnelID=p.PersonnelID
LEFT JOIN OPENDATASOURCE(
'SQLOLEDB',
'Data Source=192.168.1.41;User ID=sa;Password=123lhm..'
).onecard.dbo.Department d ON p.DepartmentID=d.DeptID
LEFT JOIN OPENDATASOURCE(
'SQLOLEDB',
'Data Source=192.168.1.41;User ID=sa;Password=123lhm..'
).onecard.dbo.Worktimegroup w ON Work.WorkTimeGroupID=w.WorkTimeGroupID
) CardRecord
where CONVERT(varchar(50),DATEADD(DAY,0,DATEADD(s,0,打卡日期)),23) between '2018-07-01' and '2018-07-30'
--查询本月打卡记录
SELECT * FROM #CardRecord WHERE 员工姓名='张雷' and 打卡日期 between dateadd(dd,-day(getdate()),getdate()) and dateadd(dd,-day(dateadd(month,1,getdate())),dateadd(month,1,getdate()))
--删除临时表
if object_id('tempdb..#CardRecord') is not null
Begin
drop table #CardRecord
End
2、收缩数据库
--重建索引
DBCC REINDEX
DBCC INDEXDEFRAG
--收缩数据和日志
DBCC SHRINKDB
DBCC SHRINKFILE
3、压缩数据库
dbcc shrinkdatabase(dbname)
4、转移数据库给新用户以已存在用户权限
exec sp_change_users_login 'update_one','newname','oldname'
go
5、检查备份集
RESTORE VERIFYONLY from disk='E:\dvbbs.bak'
6、修复数据库
ALTER DATABASE [dvbbs] SET SINGLE_USER
GO
DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK
GO
ALTER DATABASE [dvbbs] SET MULTI_USER
GO
7、日志清除
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)
AND (@OriginalSize * 8 /1024) > @NewSize
BEGIN -- Outer loop.
SELECT @Counter = 0
WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
BEGIN -- update
INSERT DummyTrans VALUES ('Fill Log') DELETE DummyTrans
SELECT @Counter = @Counter + 1
END
EXEC (@TruncLog)
END
SELECT 'Final Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),size) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @LogicalFileName
DROP TABLE DummyTrans
SET NOCOUNT OFF
8、说明:更改某个表
exec sp_changeobjectowner 'tablename','dbo'
9、存储更改全部表
CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch
@OldOwner as NVARCHAR(128),
@NewOwner as NVARCHAR(128)
AS
DECLARE @Name as NVARCHAR(128)
DECLARE @Owner as NVARCHAR(128)
DECLARE @OwnerName as NVARCHAR(128)
DECLARE curObject CURSOR FOR
select 'Name' = name,
'Owner' = user_name(uid)
from sysobjects
where user_name(uid)=@OldOwner
order by name
OPEN curObject
FETCH NEXT FROM curObject INTO @Name, @Owner
WHILE(@@FETCH_STATUS=0)
BEGIN
if @Owner=@OldOwner
begin
set @OwnerName = @OldOwner + '.' + rtrim(@Name)
exec sp_changeobjectowner @OwnerName, @NewOwner
end
-- select @name,@NewOwner,@OldOwner
FETCH NEXT FROM curObject INTO @Name, @Owner
END
close curObject
deallocate curObject
GO
10、SQL SERVER中直接循环写入数据
declare @i int
set @i=1
while @i<30
begin
insert into test (userid) values(@i)
set @i=@i+1
end
案例:
有如下表,要求就裱中所有沒有及格的成績,在每次增長0.1的基礎上,使他們剛好及格:
Name score
Zhangshan 80
Lishi 59
Wangwu 50
Songquan 69
while((select min(score) from tb_table)<60)
begin
update tb_table set score =score*1.01
where score<60
if (select min(score) from tb_table)>60
break
else
continue
end
数据开发-经典
1.按姓氏笔画排序:
Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as //从少到多
2.数据库加密:
select encrypt('原始密码')
select pwdencrypt('原始密码')
select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同 encrypt('原始密码')
select pwdencrypt('原始密码')
select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同
3.取回表中字段:
declare @list varchar(1000),
@sql nvarchar(1000)
select @list=@list+','+b.name from sysobjects a,syscolumns b where a.id=b.id and a.name='表A'
set @sql='select '+right(@list,len(@list)-1)+' from 表A'
exec (@sql)
4.查看硬盘分区:
EXEC master..xp_fixeddrives
5.比较A,B表是否相等:
if (select checksum_agg(binary_checksum(*)) from A)
=
(select checksum_agg(binary_checksum(*)) from B)
print '相等'
else
print '不相等'
6.杀掉所有的事件探察器进程:
DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill '+RTRIM(spid) FROM master.dbo.sysprocesses
WHERE program_name IN('SQL profiler',N'SQL 事件探查器')
EXEC sp_msforeach_worker '?'
7.记录搜索:
开头到N条记录
Select Top N * From 表
-------------------------------
N到M条记录(要有主索引ID)
Select Top M-N * From 表 Where ID in (Select Top M ID From 表) Order by ID Desc
----------------------------------
N到结尾记录
Select Top N * From 表 Order by ID Desc
案例
例如1:一张表有一万多条记录,表的第一个字段 RecID 是自增长字段,写一个SQL语句,找出表的第31到第40个记录。
select top 10 recid from A where recid not in(select top 30 recid from A)
分析:如果这样写会产生某些问题,如果recid在表中存在逻辑索引。
select top 10 recid from A where……是从索引中查找,而后面的select top 30 recid from A则在数据表中查找,这样由于索引中的顺序有可能和数据表中的不一致,这样就导致查询到的不是本来的欲得到的数据。
解决方案
1, 用order by select top 30 recid from A order by ricid 如果该字段不是自增长,就会出现问题
2, 在那个子查询中也加条件:select top 30 recid from A where recid>-1
例2:查询表中的最后以条记录,并不知道这个表共有多少数据,以及表结构。
set @s = 'select top 1 * from T where pid not in (select top ' + str(@count-1) + ' pid from T)'
print @s exec sp_executesql @s
9:获取当前数据库中的所有用户表
select Name from sysobjects where xtype='u' and status>=0
10:获取某一个表的所有字段
select name from syscolumns where id=object_id('表名')
select name from syscolumns where id in (select id from sysobjects where type = 'u' and name = '表名')
两种方式的效果相同
11:查看与某一个表相关的视图、存储过程、函数
select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%'
12:查看当前数据库中所有存储过程
select name as 存储过程名称 from sysobjects where xtype='P'
13:查询用户创建的所有数据库
select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name='sa')
或者
select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01
14:查询某一个表的字段和数据类型
select column_name,data_type from information_schema.columns
where table_name = '表名'
15:不同服务器数据库之间的数据操作
--创建链接服务器
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 '
--查询示例
select * from ITSV.数据库名.dbo.表名
--导入示例
select * into 表 from ITSV.数据库名.dbo.表名
--以后不再使用时删除链接服务器
exec sp_dropserver 'ITSV ', 'droplogins '
--连接远程/局域网数据(openrowset/openquery/opendatasource)
--1、openrowset
--查询示例
select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
--生成本地表
select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
--把本地表导入远程表
insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
select *from 本地表
--更新本地表
update b
set b.列A=a.列A
from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b
on a.column1=b.column1
--openquery用法需要创建一个连接
--首先创建一个连接创建链接服务器
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
--查询
select *
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
--把本地表导入远程表
insert openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
select * from 本地表
--更新本地表
update b
set b.列B=a.列B
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') as a
inner join 本地表 b on a.列A=b.列A
--3、opendatasource/openrowset
SELECT *
FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta
--把本地表导入远程表
insert opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名
select * from 本地表
SQL Server基本函数
SQL Server基本函数
1.字符串函数 长度与分析用
1,datalength(Char_expr) 返回字符串包含字符数,但不包含后面的空格
2,substring(expression,start,length) 取子串,字符串的下标是从“1”,start为起始位置,length为字符串长度,实际应用中以len(expression)取得其长度
3,right(char_expr,int_expr) 返回字符串右边第int_expr个字符,还用left于之相反
4,isnull( check_expression , replacement_value )如果check_expression為空,則返回replacement_value的值,不為空,就返回check_expression字符操作类
5,Sp_addtype 自定義數據類型
例如:EXEC sp_addtype birthday, datetime, 'NULL'
6,set nocount {on|off}
使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。SET NOCOUNT 设置是在执行或运行时设置,而不是在分析时设置。
SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。 SET NOCOUNT 为 OFF 时,返回计数
常识
在SQL查询中:
from
后最多可以跟多少张表或视图:
256
在
SQL
语句中出现
Order by
,
查询时,
先排序,后取
在
SQL
中,一个字段的最大容量是
8000
,而对于
nvarchar(4000)
,
由于
nvarchar
是Unicode码。
15Microsoft SQL Server 数据库维护的更多相关文章
- [S]SQL SERVER数据库维护与重建索引
第一步:查看是否需要维护,查看扫描密度/Scan Density是否为100% declare @table_id int set @table_id=object_id('表名') dbcc sho ...
- SQL SERVER数据库维护与重建索引
第一步:查看是否需要维护,查看扫描密度/Scan Density是否为100% declare @table_id int set @table_id=object_id('表名') dbcc sho ...
- sql server 数据库维护
select 'kill ',s.spid, sd.name, * from sys.sysprocesses sinner join sys.sysdatabases sd on s.dbid=sd ...
- SQL Server 数据库最小宕机迁移方案
一.目的 在做SQL Server数据库维护的时候,当上司要求我们把几十G的数据文件搬动到其它服务器,并且要求最小宕机时间的时候,我们有没什么方案可以做到这些要求呢? 在这里我们假设这两台机器并不是在 ...
- SQL Server数据库定时自动备份
SQL Server 数据库定时自动备份[转] 在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求 ...
- SQL Server 数据库备份还原和数据恢复
认识数据库备份和事务日志备份 数据库备份与日志备份是数据库维护的日常工作,备份的目的是在于当数据库出现故障或者遭到破坏时可以根据备份的数据库及事务日志文件还原到最近的时间点将损失降到最低点. 数据 ...
- SQL Server中的高可用性(1)----高可用性概览
自从SQL Server 2005以来,微软已经提供了多种高可用性技术来减少宕机时间和增加对业务数据的保护,而随着SQL Server 2008,SQL Server 2008 R2,SQL ...
- 第0/24周 SQL Server 性能调优培训引言
大家好,这是我在博客园写的第一篇博文,之所以要开这个博客,是我对MS SQL技术学习的一个兴趣记录. 作为计算机专业毕业的人,自己对技术的掌握总是觉得很肤浅,博而不专,到现在我才发现自己的兴趣所在,于 ...
- SQL SERVER 2005删除维护作业报错:The DELETE statement conflicted with the REFERENCE constraint "FK_subplan_job_id"
案例环境: 数据库版本: Microsoft SQL Server 2005 (Microsoft SQL Server 2005 - 9.00.5000.00 (X64) ) 案例介绍: 对一个数据 ...
随机推荐
- STM32学习之路-感觉自己走到了一个天大的坑里了!
先前兴致勃勃的来弄16位并口驱动LCD.本以为就须要改下LCD IC的初始化即可了,没想到弄了这么多天最终发现自己走进了一个深坑了 T T 原因是我的开发板是奋斗V5的, 它确实有MCU外扩IO口, ...
- https://security.stackexchange.com/questions/68405/what-is-tmunblock-cgi-and-can-it-be-exploited-by-shellshock-linux-apache-w
hndUnblock.cgi Line #1124 : 187.38.233.45 - - [15/Jan/2018:21:36:45 +0800] "GET /hndUnblock.c ...
- mysql自增主键在大量删除后如何重新设置避免断层
alter table tt auto_increment=8; 表tt mysql> select * from tt; +----+ | id | +----+ | 1 | | 2 | | ...
- Silverlight调用WCF(1)
[置顶] Silverlight调用WCF(1) 分类: 技术2012-03-31 12:29 940人阅读 评论(0) 收藏 举报 wcfsilverlightexceptionusersecuri ...
- android 使用AlarmManager定时启动service
private static AlarmManager am; private static PendingIntent pendingIntent; /** * 使用 AlarmManager 来 ...
- bzoj1597 [Usaco2008 Mar]土地购买——斜率优化DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1597 就是斜率优化水题... 然而WA了十几遍,正负号处理真让人心累... 还是该负就负,别 ...
- javascript DOM基本操作
javascript DOM基本操作 1.DOM(Document Object Model 文档对象模型) 2.节点: 文档节点:document 元素节点:html.head.body.title ...
- matlab进入指定目录
cd C:\Users\hui\Desktop\minepy\1\minepy-1.2.0\minepy-1.2.0\matlab
- 10.16NOIP模拟赛
/* 我是一个大sb */ #include<iostream> #include<cstdio> #include<cstring> #include<qu ...
- 慕课网JavaScript函数1-20 作业:函数的基础封装
1-20 作业 小伙伴们,掌握了JavaScript的语法.流程控制语句以及函数,接下来让我们运用所学知识完成如gif图所示的效果——计算自己出生那天是该年当中的第几天. gif效果图如下: 任务描述 ...