最近很多小伙伴都在问使用sqlserver链接远程服务器进行查询和sqlserver连接远程服务器这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展(转)「效率」使用VScode连接
最近很多小伙伴都在问使用sqlserver 链接远程服务器进行查询和sqlserver连接远程服务器这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展(转)「效率」使用VScode连接远程服务器进行开发、sql server 使用链接服务器远程查询、SQL Server 将SQL 导入/导出到远程服务器的简单示例、sql server里连接远程服务器,并进行创建和删除新数据库等相关知识,下面开始了哦!
本文目录一览:- 使用sqlserver 链接远程服务器进行查询(sqlserver连接远程服务器)
- (转)「效率」使用VScode连接远程服务器进行开发
- sql server 使用链接服务器远程查询
- SQL Server 将SQL 导入/导出到远程服务器的简单示例
- sql server里连接远程服务器,并进行创建和删除新数据库
使用sqlserver 链接远程服务器进行查询(sqlserver连接远程服务器)
1 --创建链接服务器 2 exec sp_addlinkedserver ‘ITSV ‘,‘ ‘,‘sqlOLEDB ‘,‘远程服务器名或ip地址 ‘ 3 exec sp_addlinkedsrvlogin ‘ITSV ‘,‘false ‘,null,‘用户名 ‘,‘密码 ‘ 4 5 --查询示例 6 select * from ITSV.数据库名.dbo.表名 7 8 --导入示例 9 select * into 表 from ITSV.数据库名.dbo.表名 10 11 --以后不再使用时删除链接服务器 12 exec sp_dropserver ‘ITSV ‘,‘droplogins ‘ 13 14 --(openrowset/openquery/opendatasource) 15 --1、openrowset 16 17 --查询示例 18 select * from openrowset( ‘sqlOLEDB ‘,‘sql服务器名 ‘; ‘用户名 ‘; ‘密码 ‘,数据库名.dbo.表名) 19 20 --生成本地表 21 select * into 表 from openrowset( ‘sqlOLEDB ‘,数据库名.dbo.表名) 22 23 --把本地表导入远程表 24 insert openrowset( ‘sqlOLEDB ‘,数据库名.dbo.表名) 25 select *from 本地表 26 27 --更新本地表 28 update b 29 set b.列A=a.列A 30 from openrowset( ‘sqlOLEDB ‘,‘sql服务器名 ‘; ‘用户名 ‘; ‘密码 ‘,数据库名.dbo.表名)as a inner join 本地表 b 31 on a.column1=b.column1 32 33 --openquery用法需要创建一个连接 34 35 --首先创建一个连接创建链接服务器 36 exec sp_addlinkedserver ‘ITSV ‘,‘远程服务器名或ip地址 ‘ 37 --查询 38 select * 39 FROM openquery(ITSV,‘SELECT * FROM 数据库.dbo.表名 ‘) 40 --把本地表导入远程表 41 insert openquery(ITSV,‘SELECT * FROM 数据库.dbo.表名 ‘) 42 select * from 本地表 43 --更新本地表 44 update b 45 set b.列B=a.列B 46 FROM openquery(ITSV,‘SELECT * FROM 数据库.dbo.表名 ‘) as a 47 inner join 本地表 b on a.列A=b.列A 48 49 --3、opendatasource/openrowset 50 SELECT * 51 FROM opendatasource( ‘sqlOLEDB ‘,‘Data Source=ip/ServerName;User ID=登陆名;Password=密码 ‘ ).test.dbo.roy_ta
参考:
(转)「效率」使用VScode连接远程服务器进行开发
原文:https://zhuanlan.zhihu.com/p/141205262
VScode简介
由微软推出的一款轻量级编辑器,拥有大量可拓展插件,可以根据自己的需求添加插件使编辑器的功能丰富起来。VScode和Sublime Text应该是最受欢迎的两款编辑器,本文将介绍在Windows下如何使用VScode连接远程linux服务器进行开发。
为什么用VScode
连接远程服务器的方法有很多,比如可以借助XShell、putty等软件使用ssh命令来登录远程服务器。但如果使用这种连接方法在远程服务器上进行开发工作,会来带诸多不便,比如:
- 全程只能在终端使用指令操作,文件操作麻烦。
- 写代码不方便,我们可能会先在本地写好代码再使用scp指令把源代码传送到服务器再运行,或直接在服务器上使用Vim或Vi进行编辑,这些操作起来我个人觉得都不顺手。
- 服务器上的图片无法查看,比如有时候我们的程序最后输出一些图片,我们在终端上无法查看,还要传回本地才能看到。
使用VScode能够很好的解决以上问题,VScode连接服务器后的方便程度和本地开发几乎没有差别!在VScode中编辑代码直接同步更新到服务器上,可以用鼠标在文件目录对文件进行操作,可以查看图片。
如何使用VScode连接远程linux服务器
安装VScode
直接在
安装OpenSSH
该服务的作用是让你可以在终端使用ssh指令,Windows10通常自带OpenSSH不需要安装。
- Windows10下检查是否已经安装OpenSSH的方法:
按下快捷键Win + X
,选择Windows PoweShell(管理员)
,输入以下指令:Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
如果电脑未安装OpenSSH,则State
会显示NotPresent
:
- 如果未安装,则输入指令:
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
安装完成后会出现以下输出:
- OpenSSH安装成功后,
Win+R
输入cmd进入终端,输入ssh
命令应该得到如下结果:
安装Remote-SSH
Remote-SSH是VScode的插件,安装完VScode以后,直接在插件中搜索ssh,即可找到Remote-SSH,点击install
安装。
配置Remote-SSH
安装完Remote-SSH以后左侧会出现一个远程资源管理的图标,选择SSH Targets,进入config配置文件
在配置文件中设置服务器信息,输入HostName和User,保存以后左侧会出现对应机器名称。
更改设置,File->Preferences->Settings->Extension->Remote-SSH
,找到Show Login Terminal并勾选。
连接服务器
点击SSH TARGETS下的服务器旁边的按钮纽行连接,弹出让你输入密码:
在这里可能会弹出让你选择服务器的平台,需要选择以后才会出现输入密码的步骤
成功连上服务器,点击有右侧的+
号创建服务器的终端窗口,可以正常使用了!
我们还可以打开服务器的文件夹
打开以后可以看到服务器文件目录,直接在文件目录中选择文件进行编辑,实时同步到服务器上,这时候已经可以开始愉快的进行开发了,开发体验媲美本地开发!
通过跳板机连接服务器
有时候我们需要跳板机来连接服务器,也即先连接一台跳板机服务器,然后通过这台跳板机所在的内网再次跳转到目标服务器。最简单的做法就是按上述方法连接到跳板机,然后在跳板机的终端用ssh
指令跳转到目标服务器,但这样跳转后,我们无法在VScode中打开服务器的文件目录,操作起来很不方便。我们可以把config的设置改成如下,就可以通过c00跳板机跳转到c01了:
Host c00
HostName xxx.xxx.xxx.xxx(跳板机IP)
User lyfeng
Host c01
HostName 192.168.0.10(内网地址)
User lyfeng
ProxyCommand "openssh的安装路径"\ssh.exe -W %h:%p -q c00
# 连接c00, 再通过c00的局域网ssh到c01
openssh的安装路径因人而异(我这里是C:\Windows\System32\OpenSSH\ssh.exe)
结语
本文是效率系列的第二篇文章,介绍了如何使用VScode连接服务器进行开发。VScode的Remote-SSH插件是让我使用VScode的直接原因,实在舒畅,再也不需要使用XShell和Vim这些组合来在远程服务器上开发了!如果大家还有其他提高工作效率的工具,欢迎讨论分享!评论看到了我会尽量回复的!
sql server 使用链接服务器远程查询
--PK
select * from sys.key_constraints where object_id = OBJECT_ID(''TB'')
--FK
select * from sys.foreign_keys where parent_object_id =OBJECT_ID(''TB'')
--创建链接服务器
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
SQL Server 将SQL 导入/导出到远程服务器的简单示例
感兴趣的小伙伴,下面一起跟随小编 jb51.cc的小编两巴掌来看看吧!
步骤如下图:
图1:
【图片暂缺】
2、弹出窗口后输入内容。总是提示输入登陆名和密码可选可不选,如图2。
图2:
【图片暂缺】
3、注册好服务器后,点击打开。如果是选择了总是提示输入登陆名和密码的话再点了确定后会提示输入用户密码,如图3。
图3:
【图片暂缺】
4、进入后,选择到您的数据库,如testdb。在上面点右键,所有任务>>导入数据,如图4。
图4:
【图片暂缺】
5、进入DTS导入/导出向导,点击“下一步”按钮继续
图5:
【图片暂缺】
6、选择数据源,输入数据源所在的数据库服务器名称、用户名、密码和要复制数据的源数据库,点击“下一步”按钮
图6:
【图片暂缺】
7、选择“在sql Server数据库之间复制对象和数据”方式,点“下一步”继续
图7:
【图片暂缺】
8、这一步可以把包括扩展属性和排序规则两个选择上。接着去掉左下的使用默认选项,点击右下角的选项来进行配置。
图8:
【图片暂缺】
9、图8中点选项后会弹出图9,把复制数据库用户和数据库角色与复制对象级权限两个选项去掉,
点确定回到图8接着点下一步进到图10。
图9:
【图片暂缺】
10、设定调度方式,一般选“立即运行”就可以,然后点“下一步”继续
图10:
【图片暂缺】
11、点完成开始执行。
图11:
【图片暂缺】
12、正在进行数据导入中
图12:
【图片暂缺】
13、如果一切正常,提示成功复制如图13,那就大功告成了。
图13:
【图片暂缺】
sql Server 导入/导出 错误排查
如果提示导入失败,出现图14情况,这时不要急着点完成关闭窗口。双击中间的出现错误会出现详细的失败原因。
图14:
【图片暂缺】
错误原因一、没安装SP3补丁
如果是出现如图15的报错原因,那么就很有可能是因为您本机的sql Server还没有打SP3补丁。
图15:
【图片暂缺】
如何查看是否已打了SP3补丁呢?右键点击本地sql Server属性,弹出图16窗口,查看产品版本一行。
像以下图显示8.00.760(SP3)说明已经打过补丁。如果您的企业管理器显示的版本要比这个小,那就是没打SP3补丁。
请安装sql Server SP3补丁后再重试。
图16:
【图片暂缺】
错误原因二、对象属性冲突
如果出现图17情况,那么应该就是您本地数据库的表/视图/存储过程的属主和服务器上数据库默认用户不一致。
服务器的用户一般是:数据库名+'_f',如我的数据库名称是testdb,则我在服务器上使用的数据库用户名就是testdb_f。
如图18,我本地的表属主是testuser,与服务器数据库用户名不一致,因此导入过程出错。
图17:
【图片暂缺】
图18:
【图片暂缺】解决方法是:
应该先把本地的所有表/视图/存储过程属主都改为dbo或testdb_f(后者需要在本地创建起相应用户。
建议创建,否则以后想从服务器上导出数据时同样会因为这个问题导出错误),再重新进行导入/导出。
打开SQL查询分析器,运行以下命令进行批量修改表属主为dbo:
exec sp_MSForEachTable 'sp_changeobjectowner ?,dbo'
运行成功后表属主会改变成如图19:
图19:
【图片暂缺】
如果需要修改视图/存储过程,则麻烦了点。
下面有个方法可以实现:
一、先在master创建一个sp_MSforeachObject存储过程,命令如下:
USE MASTER
GO
CREATE proc sp_MSforeachObject
@objectType int=1,
@command1 nvarchar(2000),
@replacechar nchar(1) = N'?',
@command2 nvarchar(2000) = null,
@command3 nvarchar(2000) = null,
@whereand nvarchar(2000) = null,
@precommand nvarchar(2000) = null,
@postcommand nvarchar(2000) = null
as
/* This proc returns one or more rows for each table (optionally,matching @where),with each table defaulting to its
own result set */
/* @precommand and @postcommand may be used to force a single result set via a temp table. */
/* Preprocessor won't replace within quotes so have to use str(). */
declare @mscat nvarchar(12)
select @mscat = ltrim(str(convert(int,0x0002)))
if (@precommand is not null)
exec(@precommand)
/* Defined @isobject for save object type */
Declare @isobject varchar(256)
select @isobject= case @objectType when 1 then 'IsUserTable'
when 2 then 'IsView'
when 3 then 'IsTrigger'
when 4 then 'IsProcedure'
when 5 then 'IsDefault'
when 6 then 'IsForeignKey'
when 7 then 'IsScalarFunction'
when 8 then 'IsInlineFunction'
when 9 then 'IsPrimaryKey'
when 10 then 'IsExtendedProc'
when 11 then 'IsReplProc'
when 12 then 'IsRule'
end
/* Create the select */
/* Use @isobject variable isstead of IsUserTable string */
EXEC(N'declare hCForEach cursor global for select ''['' + REPLACE(user_name(uid),N'']'',N'']]'') + '']'' + ''.'' + ''['' +
REPLACE(object_name(id),N'']]'') + '']'' from dbo.sysobjects o '
+ N' where OBJECTPROPERTY(o.id,N'''+@isobject+''') = 1 '+N' and o.category & ' + @mscat + N' = 0 '
+ @whereand)
declare @retval int
select @retval = @@error
if (@retval = 0)
exec @retval = sp_MSforeach_worker @command1,@replacechar,@command2,@command3
if (@retval = 0 and @postcommand is not null)
exec(@postcommand)
return @retval
GO
二、再运行以下命令批量修改表、触发器、视图、存储过程的属主(需要先在master创建sp_MSforeachObject存储过程) EXEc sp_MSforeachObject @command1=sp_changeobjectowner '?','dbo',@objectType=1
EXEc sp_MSforeachObject @command1=sp_changeobjectowner '?',@objectType=2
EXEc sp_MSforeachObject @command1=sp_changeobjectowner '?',@objectType=3
EXEc sp_MSforeachObject @command1=sp_changeobjectowner '?',@objectType=4
此时再重新进行导入应该就能一切顺利了。
sql server里连接远程服务器,并进行创建和删除新数据库
sql server里连接远程服务器,并进行创建和删除新
一、创建新库
/*
测试 在sql2005中通过查询分析器,连接到sql2000,并创建了 tmpdb 库:成功
p_CreateDB ''tmpdb1'',''data'',''sa'',''sa''
*/
-----------------------创建存储过程开始--------------------
if object_id(''p_CreateDB'') is not null
drop procedure p_CreateDB
go
CREATE PROCEDURE p_CreateDB
@Des_DB sysname, --目标数据库
@ServerName sysname=N'''', --服务器名
@UserName sysname=N'''', --用户名,不指定则表示使用 Windows 身份登录
@pwd sysname=N'''' --密码
AS
SET NOCOUNT ON
DECLARE @srvid int,--服务器的对象
@dbsid int,
@Dbid int,--新建数据库对象
@DBFile int,--新建数据库DB文件
@LogFile int,--新建数据库Log文件
@CmdStr nvarchar(4000)
declare @err int,@src varchar(255), @desc varchar(255) --错误处理变量
IF ISNULL(@ServerName,N'''')=N'''' SET @ServerName=@@ServerName --默认为本地数据库
--创建sqldmo对象·
EXEC @err=sp_oacreate ''sqldmo.sqlserver'',@srvid OUT
IF @err0 GOTO lb_Err
--连接服务器
IF ISNULL(@UserName,N'''')=N'''' --使用 Windows 身份登录
BEGIN
EXEC @err=sp_oasetproperty @srvid,''loginsecure'',-1
IF @err0 GOTO lb_Err
EXEC @err=sp_oamethod @srvid,''connect'',NULL,@ServerName
END
ELSE
EXEC @err=sp_oamethod @srvid,''connect'',NULL,@ServerName,@UserName,@pwd
IF @err0 GOTO lb_Err
--新数据库对象创建
EXEC @err=sp_oacreate ''SQLDMO.Database'',@Dbid OUT
IF @err0 GOTO lb_Err
EXEC @err=sp_oasetproperty @Dbid, ''Name'',@Des_DB
IF @err0 GOTO lb_Err
/*
---这里可以设置数据文件与日志文件的属性,不写就由sql server默认
--新数据库DB文件对象创建,并设置属性
EXEC @err=sp_oacreate ''SQLDMO.DBFile'',@DBFile OUT
IF @err0 GOTO lb_Err
EXEC @err=sp_oasetproperty @DBFile, ''Name'',''tmpfile''
IF @err0 GOTO lb_Err
EXEC @err=sp_oasetproperty @DBFile, ''PhysicalName'',''c:tmp.mdf''
IF @err0 GOTO lb_Err
EXEC @err=sp_oasetproperty @DBFile, ''PrimaryFile'',''true''
IF @err0 GOTO lb_Err
EXEC @err=sp_oasetproperty @DBFile, ''FileGrowthType'',0
IF @err0 GOTO lb_Err
EXEC @err=sp_oasetproperty @DBFile, ''FileGrowth'',1
IF @err0 GOTO lb_Err
--新数据库对象加入DB文件
EXEC @err = sp_OAMethod @Dbid,''FileGrou.Item("primary").DBFiles.Add'',null,@DBFile
IF @err0 GOTO lb_Err
--新数据库LOG文件对象创建,并设置属性
EXEC @err=sp_oacreate ''SQLDMO.LogFile'',@LogFile OUT
IF @err0 GOTO lb_Err
EXEC @err=sp_oasetproperty @LogFile, ''Name'',''tmplg''
IF @err0 GOTO lb_Err
EXEC @err=sp_oasetproperty @LogFile, ''PhysicalName'',''c:tmp.ldf''
--新数据库对象加入DB文件
EXEC @err = sp_OAMethod @Dbid,''TransactionLog.LogFiles.Add'',null,@LogFile
IF @err0 GOTO lb_Err
*/
--在服务器上创建 新数据库
EXEC @err = sp_OAMethod @srvid,''Databases.Add'',null,@dbid
IF @err0 GOTO lb_Err
/*
EXEC @err= sp_OAGetProperty @srvid, ''Databases'', @dbsid OUT
IF @err0 GOTO lb_Err
SET @CmdStr = ''Add''
EXEC @err = sp_OAMethod @dbsid,@CmdStr,null,@dbid
*/
--结束
SET @err=0
GOTO lb_Exit
--错误处理
lb_Err:
EXEC sp_oageterrorinfo NULL, @src OUT, @desc OUT
EXEC sp_OADestroy @LogFile
EXEC sp_OADestroy @DBFile
EXEC sp_OADestroy @Dbsid
EXEC sp_OADestroy @Dbid
EXEC sp_OADestroy @srvid
EXEC @err=sp_oamethod @srvid,''DisConnect''
RAISERROR(N''错误编号 %#x, 错误源 "%s", 错误描述 "%s"'',16,1,@err,@src,@desc)
RETURN -1
lb_Exit:
EXEC sp_OADestroy @LogFile
EXEC sp_OADestroy @DBFile
EXEC sp_OADestroy @Dbsid
EXEC sp_OADestroy @Dbid
EXEC sp_OADestroy @srvid
EXEC @err=sp_oamethod @srvid,''DisConnect''
RETURN @err
GO
二、删除数据库
/*
测试
p_DropDB ''tmpdb1'',''data'',''sa'',''sa''
*/
if object_id(''p_DropDB'') is not null
drop procedure p_DropDB
go
CREATE PROCEDURE p_DropDB
@Des_DB sysname, --目标数据库
@ServerName sysname=N'''', --服务器名
@UserName sysname=N'''', --用户名,不指定则表示使用 Windows 身份登录
@pwd sysname=N'''' --密码
AS
SET NOCOUNT ON
DECLARE @srvid int,--服务器的对象
@dbsid int,
@Dbid int,--数据库对象
@CmdStr nvarchar(4000)
declare @err int,@src varchar(255), @desc varchar(255) --错误处理变量
IF ISNULL(@ServerName,N'''')=N'''' SET @ServerName=@@ServerName --默认为本地数据库
--创建sqldmo对象·
EXEC @err=sp_oacreate ''sqldmo.sqlserver'',@srvid OUT
IF @err0 GOTO lb_Err
--连接服务器
IF ISNULL(@UserName,N'''')=N'''' --使用 Windows 身份登录
BEGIN
EXEC @err=sp_oasetproperty @srvid,''loginsecure'',-1
IF @err0 GOTO lb_Err
EXEC @err=sp_oamethod @srvid,''connect'',NULL,@ServerName
END
ELSE
EXEC @err=sp_oamethod @srvid,''connect'',NULL,@ServerName,@UserName,@pwd
IF @err0 GOTO lb_Err
--删除数据库
--这两个都可以删除
EXEC @err = sp_OAMethod @srvid,''KillDatabase'',null,@Des_DB
IF @err0 GOTO lb_Err
/*
--
EXEC @err = sp_OAMethod @srvid,''Databases.Remove'',null,@Des_DB
IF @err0 GOTO lb_Err
*/
--结束
SET @err=0
GOTO lb_Exit
--错误处理
lb_Err:
EXEC sp_oageterrorinfo NULL, @src OUT, @desc OUT
EXEC sp_OADestroy @Dbsid
EXEC sp_OADestroy @Dbid
EXEC sp_OADestroy @srvid
EXEC @err=sp_oamethod @srvid,''DisConnect''
RAISERROR(N''错误编号 %#x, 错误源 "%s", 错误描述 "%s"'',16,1,@err,@src,@desc)
RETURN -1
lb_Exit:
EXEC sp_OADestroy @Dbsid
EXEC sp_OADestroy @Dbid
EXEC sp_OADestroy @srvid
EXEC @err=sp_oamethod @srvid,''DisConnect''
RETURN @err
GO
今天的关于使用sqlserver 链接远程服务器进行查询和sqlserver连接远程服务器的分享已经结束,谢谢您的关注,如果想了解更多关于(转)「效率」使用VScode连接远程服务器进行开发、sql server 使用链接服务器远程查询、SQL Server 将SQL 导入/导出到远程服务器的简单示例、sql server里连接远程服务器,并进行创建和删除新数据库的相关知识,请在本站进行查询。
本文标签: