--备份当前数据库的指定表 exec p_backupdatabase @tblist='tb,tb1,tb2' --*/if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_BackupDataBase]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[p_BackupDataBase] GOCREATE PROCEDURE p_BackupDataBase @s_dbname sysname='', --要备份的数据库名,如果不指定,则备份当前数据库 @d_dbname sysname='', --备份生成的数据库名,如果不指定,则为:@s_dbname+'_bak' @tblist varchar(8000)='' --要备份的表名列表,如果不指定,则表示所有用户表 AS declare @sql varchar(8000),@err_msg varchar(1000)--参数检测 if isnull(@s_dbname,'')='' set @s_dbname=db_name() if isnull(@d_dbname,'')='' set @d_dbname=@s_dbname+'_bak' if exists(select 1 from master..sysdatabases where name=@d_dbname) begin set @err_msg='备份的数据库 ['+@d_dbname+'] 已经存在!' goto lb_exit end if not exists(select 1 from master..sysdatabases where name=@s_dbname) begin set @err_msg='要备份的数据库 ['+@d_dbname+'] 不存在!' goto lb_exit end--创建备份的数据库 set @sql='create database ['+@d_dbname+']' exec(@sql)--备份表 declare @tbname sysname set @sql='declare tb cursor for select name from ['+@s_dbname+']..sysobjects where status>0 and xtype=''U''' +case isnull(@tblist,'') when '' then '' else ' and name in('''+replace(@tblist,',',''',''')+''')' end exec(@sql) open tb fetch next from tb into @tbname while @@fetch_status=0 begin set @sql='select * into ['+@d_dbname+']..['+@tbname +'] from ['+@s_dbname+']..['+@tbname+']' exec(@sql) fetch next from tb into @tbname end close tb deallocate tblb_exit: if @err_msg<>'' raiserror(@err_msg,1,16) go
--备份数据当前数据库的所有内容
exec p_backupdatabase
--备份当前数据库的指定表
exec p_backupdatabase @tblist='tb,tb1,tb2'
--*/if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_BackupDataBase]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_BackupDataBase]
GOCREATE PROCEDURE p_BackupDataBase
@s_dbname sysname='', --要备份的数据库名,如果不指定,则备份当前数据库
@d_dbname sysname='', --备份生成的数据库名,如果不指定,则为:@s_dbname+'_bak'
@tblist varchar(8000)='' --要备份的表名列表,如果不指定,则表示所有用户表
AS
declare @sql varchar(8000),@err_msg varchar(1000)--参数检测
if isnull(@s_dbname,'')='' set @s_dbname=db_name()
if isnull(@d_dbname,'')='' set @d_dbname=@s_dbname+'_bak'
if exists(select 1 from master..sysdatabases where name=@d_dbname)
begin
set @err_msg='备份的数据库 ['+@d_dbname+'] 已经存在!'
goto lb_exit
end
if not exists(select 1 from master..sysdatabases where name=@s_dbname)
begin
set @err_msg='要备份的数据库 ['+@d_dbname+'] 不存在!'
goto lb_exit
end--创建备份的数据库
set @sql='create database ['+@d_dbname+']'
exec(@sql)--备份表
declare @tbname sysname
set @sql='declare tb cursor for
select name from ['+@s_dbname+']..sysobjects
where status>0 and xtype=''U'''
+case isnull(@tblist,'') when '' then ''
else ' and name in('''+replace(@tblist,',',''',''')+''')' end
exec(@sql)
open tb
fetch next from tb into @tbname
while @@fetch_status=0
begin
set @sql='select * into ['+@d_dbname+']..['+@tbname
+'] from ['+@s_dbname+']..['+@tbname+']'
exec(@sql)
fetch next from tb into @tbname
end
close tb
deallocate tblb_exit:
if @err_msg<>'' raiserror(@err_msg,1,16)
go
--在sql中映射一下就可以了
exec master..xp_cmdshell 'net use z: \\yizhi\D$ "密码" /user:yizhi\administrator' /*--说明:
exec master..xp_cmdshell 'net use z: \\xz\c$ "密码" /user:xz\administrator' z:是映射网络路径对应本机的盘符,与下面的备份对应
\\xz\c$是要映射的网络路径 xz\administrator
xz是远程的计算机名,
administrator是登陆的用户名
密码 面指定的administrator用户的密码
--*/ --备份;with init覆盖 ¦noinit添加
backup database 库名 to disk='E:\H_BACKUP.bak' with init --COPY
exec master..xp_cmdshell 'copy E:\H_BACKUP.bak z:' --删除(这句可以去掉)
--exec master..xp_cmdshell 'del E:\H_BACKUP.bak' --完成后删除映射
exec master..xp_cmdshell 'net use z: /delete'
--不能互相通信?
--不同服务器数据库之间的数据操作--创建链接服务器
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
--把本地表导入远程表
2不能連網 找U盤,把MDF,LDF拷貝過去,附加為不同名稱的數據庫,然後跨庫操作
商品id 类别id
1 0001
2 0002 类别id是table_type的主键
3 0002
我现在的table_type分类表重新做,所以每个商品所属的类别id也要变,我这个表是在本地设计的。想在服务器上更改。 有没有什么简单的方法就像复制粘贴一样到服务器 把本地的table_type表复制到 服务器 新建表table_type_bak