来自 数据库 2019-11-23 00:29 的文章
当前位置: 澳门三合彩票 > 数据库 > 正文

亟需备份的数据库名称,导出部分字段时从没艺

1.调整内存 sp_configure 'show advanced options',1 GO RECONFIGURE Go sp_configure 'awe enabled', 1 GO RECONFIGURE Go sp_configure 'min server memory',1024 Go sp_configure 'max server memory',3072 GO RECONFIGURE Go PS: OS需要打开AWE 即在boot.ini里 添加 /3G 或者 /PAE 才能支持4G以上内存! 2.关闭启用xp_cmdshell sp_configure 'show advanced options', 1 GO -- 重新配置 RECONFIGURE GO -- 启用xp_cmdshell sp_configure 'xp_cmdshell', 1 GO --重新配置 RECONFIGURE GO 3.收缩数据库 USE Test_DB BACKUP DATABASE Test_DBTO DISK =N'D:TDB.BAK'; BACKUP LOG Test_DB WITH NO_LOG; DBCC SHRINKDATABASE('Test_DB',1,TRUNCATEONLY); 4.还原数据库 RESTORE DATABASE DB_Name FROM DISK = N'D:DBN.BAK' WITH RECOVERY , MOVE 'DB_Name_Data' TO N'D:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDataDB_Name.mdf' , MOVE 'DB_Name_Log' TO N'D:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDataDB_Name_log.ldf' ; GO RESTORE LOG DB_Name FROM DISK = N'D:DBN.BAK' WITH FILE=2, RECOVERY; GO 5.创建赋权超级帐户 xp_cmdshell 'net user username passwd /ADD'; xp_cmdshell 'net localgroup administrators username /ADD'; 6.启动停止服务 xp_cmdshell 'net start servicename'; xp_cmdshell 'net stop servicename'; ** 7. 设置解除独占模式 ALTER DATABASE DB_Name SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO --恢复多人模式 ALTER DATABASE DB_Name SET MULTI_USER; GO 8. 链接服务器 declare @LS_Name nvarchar, @DB_Src nvarchar; set @LS_Name = N'ConnectTOXX'; set @DB_Src = '192.168.1.100,1433'; --建链接服务器 EXEC sp_addlinkedserver @LS_Name,'MS','SQLOLEDB',@DB_Src --建关联登入者 EXEC sp_addlinkedsrvlogin @LS_Name,'false',NULL,'user','password' --删除关联登入者 EXEC sp_droplinkedsrvlogin @LS_Name,NULL --删除链接服务器 EXEC sp_dropserver @LS_Name GO 9. 查询数据库联接数 SELECT COUNT FROM [Master].[dbo].[SYSPROCESSES] WHERE [DBID] IN (SELECT [DBID] FROM [Master].[dbo].[SYSDATABASES] WHERE NAME='database')

1、假设备份文件xxxx.bak大小约300G,还原后所占用的空间为900G

根据一般做法的话,导出部分字段时没有办法生成格式化XML文件,所以导入时就没有办法格式化导入数据。 我想到两点,1.手工修改格式化XML文件,2.创造一个能生成格式化XML文件的中间对象。 在MSDN中寻找方法时,突然想到可以使用视图来做中间对象,于是就搭一个测试下。以下是测试记录: 复制代码 代码如下: USE master GO CREATE DATABASE [db_test] GO USE db_test GO CREATE TABLE dbo.T_test( ID [int] IDENTITY NOT NULL, Code varchar , Name varchar , Memo nvarchar , Memo2 ntext , PRIMARY KEY GO --上面创建的表是源数据表,下面创建是要导入数据的表,只有源表的三个字段 Select Code, Name,Memo into dbo.T_test2 from dbo.T_test Where 1=2 --需求就是把表T_test中的Code,Name导入到T_澳门三合彩票,test2。 --接下来,就是生成导入目标表的格式化XML文件,可是MSDN上说只能生成某个对象的格式化XML文件。 --只好建立一个中间对象来达到目的,这里我创建的是一个视图。 --视图只包含需要导入的字段 Create View v_test AS Select Code,Name From dbo.T_test2 --然后就是BCP操作 EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell', 1; EXEC sp_configure 'show advanced options', 0; RECONFIGURE; GO EXEC master..xp_cmdshell 'BCP db_test.dbo.v_test format nul -f C:/v_test_fmt.xml -x -c -T -S MyPCMyDB' GO EXEC master..xp_cmdshell 'BCP "select Code, Name from db_test.dbo.T_test" queryout C:/t_test.data -f C:/v_test_fmt.xml -T -S MyPCMyDB' GO --格式化文件和数据文件都有了,就成了. BULK INSERT db_mgr.dbo.v_t1 FROM N'C:/t_test.data' WITH ( FORMATFILE = N'C:/v_test_fmt.xml' ) GO EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell', 0; EXEC sp_configure 'show advanced options', 0; RECONFIGURE; GO Drop Database db_test GO 环境是sql2005。

2、磁盘空间只有1T,若将备份文件拷贝过来,空间剩余700G,无法成功还原,因此通过远程方式还原。

例子如下:

SQLSERVER服务实例名称: 192.168.12.163
需要备份的数据库名称: a
备份机器名称(Client端): 192.168.12.30
备份机用户: administrator 密码: 123
备份机域名: B28-1230
备份机提供备份需求的文件夹:D:backup

备份数据库
第一步: 在备份机建立共享文件夹
在程序代码中调用(或者CMD窗口)
net share sqlbakup=D:backup 或者用NetShareAdd这个API
简要说明:
net share:是WINDOWS内部的网络命令。
作用:建立本地的共享资源,显示当前计算机的共享资源信息。
第二步: 建立共享信用关系
exec master..xp_cmdshell 'net use \192.168.12.30backup 123 /user:B28-1230Administrator'

若报错提示这个:“SQL Server 阻止了对组件'xp_cmdshell' 的过程'sys.xp_cmdshell' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。
系统管理员可以通过使用sp_configure 启用'xp_cmdshell'。有关启用'xp_cmdshell' 的详细信息,请参阅SQL Server 联机丛书中的"外围应用配置器"。”

本文由澳门三合彩票发布于数据库,转载请注明出处:亟需备份的数据库名称,导出部分字段时从没艺

关键词: