--把Insert语句放到with后面即可
with aaa as{....}insert into 表
select * from aaa
如有问题可以追问,我当及时回答.
希望能帮到你
2.截断事务日志:BACKUP LOG 数据库名WITH NO_LOG3.收缩数据库文件(如果不压缩,数据库的文件不会减小企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了也可以用SQL语句来完成--收缩数据库DBCC SHRINKDATABASE(客户资料)--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfilesDBCC SHRINKFILE(1) 代码如下复制代码backup, log, 模式-- 第一步:清空日志DUMP TRANSACTION [YZGA] WITH NO_LOG-- 第二步:截断事务日志BACKUP LOG [YZGA] WITH NO_LOG-- 第三步:收缩数据库尽管可用该选项手动截断事务日志,但是我们极力建议您不要这样做,因为这会将日志链断开。在下一次完整备份或完整差异备份之前,将无法为数据库提供媒体故障保护。只在非常特殊的情况下才手动截断日志,并立即创建数据备份。 删除日志方法二1、进入企业管理器,选中数据库,比如it,所有任务->分离数据库。2、如果数据库正在连接使用,要先点清除,才可以选确定。3、到数据库文件的存放目录,将it_log.LDF文件删除,不放心可以先拷到别的地方。4、进入企业管理器,数据库->所有任务->附加数据库。5、选择it_Data.MDF,这个时候你会看见日志文件这项是一个红叉,不要紧点确定。6、此时数据库就会提示你该数据库无日志是否创建一个新的,确定就是了。通过工具DTS的设计器进行导入或导出
DTS的设计器功能强大 支持多任务 也是可视化界面 容易 *** 作 但知道的人一般不多 如果只是进行SQL Server数据库中部分表的移动 用这种方法最好 当然 也可以进行全部表的移动 在SQL Server Enterprise Manager中 展开服务器左边的+ 选择数据库 右击 选择All tasks/Import Data (或All tasks/Export Data ) 进入向导模式 按提示一步一步走就行了 里面分得很细 可以灵活的在不同数据源之间复制数据 很方便的 而且可以另存成DTS包 如果以后还有相同的复制任务 直接运行DTS包就行 省时省力
也可以直接打开DTS设计器 方法是展开服务器名称下面的Data Transformation Services 选Local Packages 在右边的窗口中右击 选New Package 就打开了DTS设计器 值得注意的是:如果源数据库要拷贝的表有外键 注意移动的顺序 有时要分批移动 否则外键主键 索引可能丢失 移动的时候选项旁边的提示说的很明白 或者一次性的复制到目标数据库中 再重新建立外键 主键 索引
其实建立数据库时 建立外键 主键 索引的文件应该和建表文件分开 而且用的数据文件也分开 并分别放在不同的驱动器上 有利于数据库的优化
利用Bcp工具
这种工具虽然在SQL Server 的版本中不推荐使用 但许多数据库管理员仍很喜欢用它 尤其是用过SQL Server早期版本的人 Bcp有局限性 首先它的界面不是图形化的 其次它只是在SQL Server的表(视图)与文本文件之间进行复制 但它的优点是性能好 开销小 占用内存少 速度快 有兴趣的朋友可以查参考手册
利用备份和恢复
先对源数据库进行完全备份 备份到一个设备(device)上 然后把备份文件复制到目的服务器上(恢复的速度快) 进行数据库的恢复 *** 作 在恢复的数据库名中填上源数据库的名字(名字必须相同) 选择强制型恢复(可以覆盖以前数据库的选项) 在选择从设备中进行恢复 浏览时选中备份的文件就行了 这种方法可以完全恢复数据库 包括外键 主键 索引
直接拷贝数据文件
把数据库的数据文件(* mdf)和日志文件(* ldf)都拷贝到目的服务器 在SQL Server Query Analyzer中用语句进行恢复:
EXEC sp_attach_db @dbname = ’test’
@filename = ’d:mssql data est_data mdf’
@filename = ’d:mssql data est_log ldf’
这样就把test数据库附加到SQL Server中 可以照常使用 如果不想用原来的日志文件 可以用如下的命令:
EXEC sp_detach_db @dbname = ’test’
EXEC sp_attach_single_file_db @dbname = ’test’
@physname = ’d:mssql data est_data mdf’
这个语句的作用是仅仅加载数据文件 日志文件可以由SQL Server数据库自动添加 但是原来的日志文件中记录的数据就丢失了
在应用程序中定制
可以在应用程序(PB VB)中执行自己编写的程序 也可以在Query Analyzer中执行 这种方法比较灵活 其实是利用一个平台连接到数据库 在平台中用的主要时SQL语句 这种方法对数据库的影响小 但是如果用到远程链接服务器 要求网络之间的传输性能好 一般有两种语句:
>select into new_tablename where
>insert (into) old_tablename select from
where
区别是前者把数据插入一个新表(先建立表 再插入数据) 后者是把数据插入已经存在的一个表中 我个人喜欢后者 因为在编程的结构上 应用的范围上 第二条语句强于前者
SQL Server的复制功能
SQL Server提供了强大的数据复制功能 也是最不易掌握的 具体应用请参考相关资料 值得注意的是要想成功进行数据的复制工作 有些条件是必不可少的:
>SQL Server Agent必须启动 MSDTC必须启动
>所有要复制的表必须有主键
>如果表中有text或image数据类型 必须使用with log选项 不能使用with no_log选项
另外max text repl size选项控制可以复制的文本和图像数据的最大规模 超过这个限制的 *** 作将失败
>在要进行复制的计算机上 应该至少是隐含共享 即共享名是C$或D$…
>为SQL Server代理使用的Windows NT帐号不能是一个本地的系统帐号 因为本地的系统帐号不允许网络存取
lishixinzhi/Article/program/SQLServer/201311/22358
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)