mssql2008数据库
如何将mdf, ldf文件导入到sql server 2008数据库当中,下面提供两种办法:
第一种是右击数据库,然后点击附加。出现下面的界面。然后选择添加,添加上你要添加的mdf文件即可。
第二种方法是:新建查询,然后输入下列语句,
EXEC sp_attach_db @dbname = 'yourdatabasename',
@filename1 = 'x:\路径\MSSQL\Data\pubs.mdf',
@filename2 = 'x:\路径\MSSQL\Data.Ldf
2. SQLServer2008数据库怎样备份还原和数据恢复
在完整恢复模式或大容量日志恢复模式下,必须先备份活动事务日志(称为日志尾部),然后才能在SQLServerManagementStudio中还原数据库。有关详细信息,请参阅如何备份事务日志(SQLServerManagementStudio)。若要还原已加密的数据库,您必须有权访问用于加密数据库的证书或非对称密钥。如果没有证书或非对称密钥,数据库将无法还原。
认识数据库备份和事务日志备份
数据库备份与日志备份是数据库维护的日常工作,备份的目的是在于当数据库出现故障或者遭到破坏时可以根据备份的数据库及事务日志文件还原到最近的时间点将损失降到最低点。
数据库备份
数据库备份可以手动备份和语句备份
一.手动备份数据库
1.鼠标右键选择你要进行备份的数据库-任务-备份
可以在常规选项页面你可以选择备份类型是进行完整数据库备份还是差异数据库备份
2.点击添加选项,选择数据库文件的存放路径
注意文件名记得加后缀.bak,便于恢复时的查找
3.你还可以在选项页面是追加到现有的备份集,还是覆盖所有的现有备份集,还可以选择备份验证完整性(建议选择),还可以选择是否压缩备份等。
二.语句备份数据库
use master goBACKUP DATABASE [test] TO DISK = N'D:Microsoft sql serverMSSQL10.MSSQLSERVERMSSQLBackup est.bak' WITH NOFORMAT, NOINIT, NAME = N'test-完整 数据库 备份', SKIP, NOREWIND, NOUNLOAD, STATS = 10GO
数据库日志备份
首先需要注意,数据库日志的备份是基于数据库完整备份,也就是说你备份数据库日志之前你首先要先对数据库进行一次完整的备份,因为之间会涉及到坚持到检查点 lsn, 这也是本文接下来要讲的重点。
一.手动备份数据库日志
1.右键数据库-任务-备份-选择备份类型(事务日志)
2.点添加,添加日志文件备份存储路径
3.同数据库完整备份一样,你也可以选择覆盖现有备份集或者追加到现有备份集,这里现在覆盖现有备份集、验证完整性,然后确认备份
二.语句备份数据库事务日志
BACKUP LOG [test] TO DISK = N'D: est.trn' WITH NOFORMAT, INIT, NAME = N'test-事务日志 备份', SKIP, NOREWIND, NOUNLOAD, STATS = 10GO
数据库还原
右键数据库-还原数据库-添加需要进行还原的数据库文件路径
在还原源选项中你可以选择‘源数据库’,‘源设备’。1.选择源数据库工具会自动显示该数据库之前的一些备份,然后直接选择需要还原的数据库备份集。
2.选择源设备点击后面的...,添加需要还原的数据库文件
2.点击确认还原数据库
数据库恢复
数据库恢复的前提是1.一个完整的数据库备份2.包含这个完整数据库备份的事务日志备份3.完整备份之间也可以存在数个差异备份
对于数据库维护空间始终是一个比较头疼的问题,特别是对于大型数据库而言,每天的日志文件增长是庞大的,很多数据库管理员会定时对数据库日志文件进行收缩,但是经常收缩会存在收缩完日志文件还是不能减少,这是因为存在很多活动的日志无法收缩可以用
DBCC LOGINFO('数据库名称')
我们看到
status=0的日志,代表已经备份到磁盘的日志文件;而
status=2的日志还没有备份。当我们收缩日志文件时,收缩掉的空
间其实就是
status=0的空间,如果日志物理文件无法减小,这里一
定能看到非常多status=2的记录
解决办法:1.可以分离要收缩的数据库,然后手动删除日志文件,然后附加数据库,数据库就会产生一个很小的日志文件(不推荐使用这种方法)
2.右键要出来的数据库选择“属性”-"选项",将恢复模式改成"简单",然后利用收缩工具可以讲日志文件收缩到很小,收缩完记得讲恢复模式改成"完整"
也可以用语句进行处理(dbname是你要进行收缩的数据库名,dbname_log是你要进行收缩的数据库的逻辑日志名称)
USE [master]
GO ALTER DATABASE [dbname] SET recovery SIMPLE WITH NO_WAIT GO
ALTER DATABASE [dbname] SET RECOVERY SIMPLE --简单模式
GO
USE [dbname]
GO
DBCC SHRINKFILE (N'dbname_log' , 11, TRUNCATEONLY) GO
USE [master]
GO
ALTER DATABASE [dbname] SET RECOVERY FULL WITH NO_WAIT ALTER DATABASE [dbname] SET RECOVERY FULL
对于第一种方法不赞同使用,首先对于数据库的分离与附加有时候会破坏数据库,造成数据库无法还原,还有就是对于在线数据库也不允许进行分离操作。
对于第二种方法是slq2008收缩日志文件的一种方法,但是此方法也不能使用过于频繁,因为进行数据库恢复模式的更改会截断事务日志文件,这样的话当时利用事务日志文件进行恢复的时候检查点不能包含数据库文件,而且当你要对事务日志进行备份的时候会重新提示你需要对数据库进行完整备份。
举个例子:比如你昨天晚上进行了一次完整备份,然后同时你也进行了一次日志备份(提前日志未被截断),然后你每个小时进行过一次差异备份,最近的差异备份时间点是14点,如果此时数据库错误修改了数据,你可以立马备份一个日志文件将数据库恢复到日志备份开始到日志备份终点前的任意时间点 。
如果此时你进行了修改数据库模式,截断日志进行了收缩,那么你的数据只能恢复到昨天晚上备份的那个日志备份时间前的任意时间点,也就是今天所做的数据库更改无法再恢复了,因为日志文件已经被截断了,不知道这样解释是否明白
因为日志文件的检查点(lsn)是连续的,每一次日志备份都是在上一次备份的基础上lsn往后增加的,lsn的范围也包括了数据库文件的lsn,也只有日志文件的lsn包括了数据库文件的lsn,才能将数据库文件进行回滚。
上图中总共有三个备份文件,一个完整备份、一个差异备份、一个日志备份,大家可以注意观察完整备份的第一个lsn与最后一个lsn,和检查点
第二个差异备份文件的的第一个lsn与最后一个lsn,和检查点,最后的日志备份的第一个lsn和最后一个lsn包含了前面两个备份文件的lsn,这种情况数据库就可以恢复到日志文件备份前的任意时间点,如果日志文件没有包含数据库文件的最后一个lsn也就无法恢复了。
3. 急!!!MSSQL2008上传数据时在最后一步出现错误,请懂数据库的大神指点下解决办法啊~~
关键应该是这句“违反了 PRIMARY KEY 约束 'PK_DomainName'。不能在对象 'dbo.DomainName' 中插入重复键。”
应该是添加了数据的参照完整性后,数据本身没有按照约束规定,导致导入出错。例如DomainName 规定是主键而你导入的数剧中,有两个相同的DomainName值的数据行,肯定会提示错误
4. 如何设置外网访问sql2008数据库服务器
在设置外网访问SQL2008数据库 之前,首先必须保证局域网内访问SQL2008没有问题 。那么,我们先来看看局域网内访问SQL2008数据库需要哪些步骤和设置,才能做到在局域网内任何一台机器上输入SQL2008数据库IP地址和端口号即能访问。
1.SQL2008数据库端设置
通常一台机器装上SQL2008后,要实现局域网访问SQL2008只要几步。
1)打开SQL2008配置工具,步骤:【开始】—>【所有程序】—>【Microsoft SQL Server 2008】—>【Configuration Tools】—>【SQL Server Configuration Manager】;
2)在打开的配置界面,双击左边【SQL Server 网络配置】,可以看到本机安装的数据库实例的协议,一般有【SQL Express的协议】和【MSSQLSERVER】的协议,如果你安装时不是使用默认实例名,那么在这里你应该找到自己需要设置外网访问的数据库实例名,双击它;
3)此时,可以看到四个协议,一般启用前三个,禁用最后一个,即启用【shared memory】、【named pipes】和【TCP/IP】,禁用【VIA】;
4)启用【TCP/IP】后,顺便应该鼠标右键该协议属性,设置下开放的端口,在IP1-IP9中都可以设置成1433,【活动】和【已启用】都选择【是】,最后一个IPALL也可设置成1433;ok,这时必须在配置页面的SQL Server服务项下面重启服务器,才能使得设置生效,如果这样还不行,建议重启电脑。
5)可以关闭了配置工具了,接下来打开【SQL Server Manager Studio】,登入您的数据库,打开后在【对象资源管理器】找到你数据库服务器的根节点,鼠标右键,选择【方面】,在方面下拉菜单下选择【外围应用配置】,在下面找RomoteDacEnabled,设置为True,然后重启数据库;(这个选项在我的设置过程中貌似没有起到作用,不设置为True好像远程也能访问);
6)设置到这里基本上就可以实现局域网内访问SQL2008数据库了。如果还不行,请将X:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn\sqlservr.exe在windows防火墙中设置程例外,也将X:\Program Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe设置成例外,把1433端口也设置成例外。
5. 如何更改SQL Server2008默认数据库的存储路径
1.安装SQl Server过程中,修改路径(因为我安装的时候,忘记改路径了,所以没截下图来,黄色部分是真正的标注):
2.打开SQL Server2008,在图形界面里修改数据库的存储路径:
右击“对象资源管理器”,然后单击“属性”,在单击“数据库设置”,修改下面的“数据库默认位置”中的“数据”,“日志”里面的存储位置为你想放的位置即可。
3.用SQL语句修改数据库的存储路径,将“E:\YourData”,“E:\YourLogs”改为你想放的位置即可(这个我没试过,也是看大神写的,就总结在这里了):
USE [master]
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', REG_SZ, N'E:\YourData'
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultLog', REG_SZ, N'E:\YourLogs'
GO
4.这个我也没试过,大家可以试一下。
Windows Server 2008 Standard Version 64-bit
SQL Server 2005 Standard Version 64-bit
查询用户库Data文件默认路径:
DECLARE @DefaultData VARCHAR(100)
EXEC master..xp_regread @rootkey='HKEY_LOCAL_MACHINE',
@key='Software\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer',
@value_name='DefaultData',
@DefaultData=@DefaultData OUTPUT
SELECT @DefaultData
查询用户库Log文件默认路径:
DECLARE @DefaultLog VARCHAR(100)
EXEC master..xp_regread @rootkey='HKEY_LOCAL_MACHINE',
@key='Software\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer',
@value_name='DefaultLog',
@DefaultLog=@DefaultLog OUTPUT
SELECT @DefaultLog
查询用户库备份文件默认路径:
DECLARE @BackupDirectory VARCHAR(100)
EXEC master..xp_regread @rootkey='HKEY_LOCAL_MACHINE',
@key='Software\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer',
@value_name='BackupDirectory',
@BackupDirectory=@BackupDirectory OUTPUT
SELECT @BackupDirectory
修改用户库Data文件默认路径:
EXEC master..xp_regwrite
@rootkey='HKEY_LOCAL_MACHINE',
@key='Software\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer',
@value_name='DefaultData',
@type='REG_SZ',
@value='D:\SQL2005\Data'
修改用户库Log文件默认路径:
EXEC master..xp_regwrite
@rootkey='HKEY_LOCAL_MACHINE',
@key='Software\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer',
@value_name='DefaultLog',
@type='REG_SZ',
@value='D:\SQL2005\Log'
修改用户库备份文件默认路径:
EXEC master..xp_regwrite
@rootkey='HKEY_LOCAL_MACHINE',
@key='Software\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer',
@value_name='BackupDirectory',
@type='REG_SZ',
@value='D:\SQL2005\DBBak'
5.(这个也没试过,嘿嘿)
-- 更改数据文件存放目录
EXEC xp_instance_regwrite
@rootkey='HKEY_LOCAL_MACHINE',
@key='Software\Microsoft\MSSQLServer\MSSQLServer',
@value_name='DefaultData',
@type=REG_SZ,
@value='E:\Data'
GO
-- 更改日志文件存放目录
EXEC master..xp_instance_regwrite
@rootkey='HKEY_LOCAL_MACHINE',
@key='Software\Microsoft\MSSQLServer\MSSQLServer',
@value_name='DefaultLog',
@type=REG_SZ,
@value='E:\Data'
GO
6. 谁能帮我把MSSQL2008R2(661)版本数据库转为MSSQL2008(655)或者2005能附加上得
首先,要确保你的机子上安装了sql2008和sql2005,如果源数据库是放在服务器的话那么要确保能链接到服务器数据库。
1、用sql2008打开数据库,然后选择到导入到sql2005的目标数据库,鼠标右键---->数据导出,如图:
2、之后会弹出对话框:
选择下一步,会弹出如下对话框:
3、上图对话框弹出来后选择sql2008的数据源跟目标数据库,然后点下一步,弹出对话框:
这一步选择sql2005的导出到的数据库,如果没有数据库,需要先在sql2005新建一个数据库,继续点下一步,弹出对话框:
选择复制一个表或者多个表和视图,然后继续下一步
4、弹出选择要复制的表和视图的对话框,如图:
在这里选择要导出的表和视图,全选就是复制整个数据库了。然后继续下一步:
选择立即运行然后下一步:
如果没有报错,顺利运行,就完成了从sql2008到sql2005的数据库复制。
然后再从sql2005把数据库备份,就可以在在其他机子的sql2005还原了。
总结,将表的创建脚本提取出来执行,创建一个表,然后执行insert into table_A@服务器1 select * from table_B@服务器2
7. sql 2008数据库连接不上怎么弄
1、看看有没有启动服务:
net start mssqlserver
2、试试通过sa用户来登录
3、通过服务器ip,端口 来访问试试,比如:
192.168.1.16,1433
8. SQL Server 2008中怎么创建数据库
1、选择开始菜单中→程序→【Management SQL Server 2008】→【SQL Server Management Studio】命令,打开【SQL Server Management Studio】窗口,并使用Windows或 SQL Server身份验证建立连接。
2、在【对象资源管理器】窗口中展开服务器,然后选择【数据库】节点
3、右键单击【数据库】节点,从弹出来的快捷菜单中选择【新建数据库】命令。
4、执行上述操作后,会弹出【新建数据库】对话框。在对话框、左侧有3个选项,分别是【常规】、【选项】和【文件组】。完成这三个选项中的设置会后,就完成了数据库的创建工作,
5、在【数据库名称】文本框中输入要新建数据库的名称。例如,这里以“新建的数据库”。
6、在【所有者】文本框中输入新建数据库的所有者,如sa。根据数据库的使用情况,选择启用或者禁用【使用全文索引】复选框。
7、在【数据库文件】列表中包括两行,一行是数据库文件,而另一行是日记文件。通过单击下面的【添加】、【删除】按钮添加或删除数据库文件。
8、切换到【选项页】、在这里可以设置数据库的排序规则、恢复模式、兼容级别和其他属性。
9、切换到【文件组】页,在这里可以添加或删除文件组。
10、完成以上操作后,单击【确定】按钮关闭【新建数据库】对话框。至此“新建的数据”数据库创建成功。新建的数据库可以再【对象资源管理器】窗口看到。
9. mssql2008 如何压缩数据库
照着数据库的压缩向导执行就行。压缩的目的是为了减少数据库中的空白,而不是提高效率,所以不要频繁的压缩数据库,只要在数据库太大,或是准备备份数据库的时候,才需要压缩。