sql不同实例
‘壹’ sql集群中单实例和多实例的区别
简单点说数据库是磁盘上的阵列,存储在操作系统文件中,在UNIX下,也可以存储在裸文件中。
而实例实例有SGA和后台进程组成,通过ORACLE服务器管理器或者OEM启动。而数据库安装在实例上,并最终被打开。这样用户就可以连接到实例以访问数据库中的数据。
除了在OPS环境中,实例和数据库一一对应。在OPS中,一个数据库可以安装在多个实例上。
也就是说单实例的话单个的一一对应的管理一个数据库。
多实例的话就是并行服务器上,多个实例管理一个数据库。
不知道你指的效率是哪方面的。多个实例管理一个数据库,效率肯定要更高嘛,就像几个人同做一件事。个人理解。。
‘贰’ SQL中的"实例"是什么概念
一个运行中的程序就是一个实例,比如说你可以同时运行一个程序2次,那就是2个实例
‘叁’ 怎么用sql 2000 的服务管理器管理不同版本的sql 实例
在SQLServer组上点击右键,新建sqlserver注册,如下图
实例名时要写:.实例名,这个实例名时你可以选为windows身份验证
若是写的ip地址再加实例名,那你则选为使用sqlserver身份验证,然后录入密码就行了!
希望对你能有所帮助!
‘肆’ sql server实例和数据库的区别是什么
一个数据库中包含存储真正数据的多个表结构,而一个实例包含多个数据库,一台服务器(硬件)可以包含多个实例。
每个实例是一个SQL Server安装的组件(或数据库引擎的程序,工具和相关程序)。每个用户数据库(和表)通过编写代码,使用的工具,复制/恢复现有数据库而创建。当安装SQL Server程序时,可以通过命名在一台机器上安装不同的实例。例如,你可以有SQL2005,SQL2008,SQL2012作为SQL Server独立的命名实例。也可以用相同的版本安装成不同的实例,如SQL2005DW(用于数据仓库),SQL2005_PAY(工资单),SQL2005_ERP等等。
可以有一个(并且唯一)被称为默认实例的实例,在同一台机器上所有其他实例必须有一个名称(16个字符)。
该程序之间(SQL Server数据库引擎)互相竞争机器资源,所以你必须了解和管理每个实例将如何竞争,否则它们会机器运行变慢甚至停止。
可能更常见的是一个实例中存在多个数据库。每个实例都有”系统“数据库(MASTER,MODEL,RESOURCES,MSDB,TEMPDB),然后您可以在该实例中创建自己的用户数据库。
在管理服务器资源方面,你可以管理每个实例需要多少内存和CPU。但是对于一个实例中的数据库,却不能这样做。
可以在实例或数据库两个层级上应用安全和访问限制。虽然有时业务可能更偏向将高度敏感/涉及安全的数据作为一个单独的实例(如薪资数据库),以避免任何危险。
当连接到一个数据库,必须同时提供实例名称和数据库名称。
‘伍’ SQL的实例名不同会不会影响数据库还原
可以还原啊,只要名字相同版本号相同就ok
‘陆’ sQL server 什么是实例
就是一个在数据库中存在的,现实的数据库例子!
数据库实例就是后台进程和数据库文件的集合。
一个sql
server服务器就是一个实例,2000支持在同一个nt/2000
server操作系统装多个服务器,换言之,就是多个实例。
多个
sql
server
实例
microsoft®
sql
server™
2000
支持在同一台计算机上同时运行多个
sql
server
数据库引擎实例。每个
sql
server
数据库引擎实例各有一套不为其它实例共享的系统及用户数据库。应用程序连接同一台计算机上的
sql
server
数据库引擎实例的方式与连接其它计算机上运行的
sql
server
数据库引擎的方式基本相同。
有两种类型的
sql
server
实例:
默认实例
sql
server
2000
数据库引擎默认实例的运行方式与
sql
server
早期版本的数据库引擎相同。默认实例仅由运行该实例的计算机的名称唯一标识,它没有单独的实例名。如果应用程序在请求连接
sql
server
时只指定了计算机名,则
sql
server
客户端组件将尝试连接这台计算机上的数据库引擎默认实例。这保留了与现有
sql
server
应用程序的兼容性。
一台计算机上只能有一个默认实例,而默认实例可以是
sql
server
的任何版本。
命名实例
除默认实例外,所有数据库引擎实例都由安装该实例的过程中指定的实例名标识。应用程序必须提供准备连接的计算机的名称和命名实例的实例名。计算机名和实例名以格式
computer_name\instance_name
指定。
一台计算机上可以运行多个命名实例,但只有
sql
server
2000
数据库引擎才可作为命名实例运行。sql
server
早期版本中的数据库引擎不能作为命名实例运行。
实例主要应用于数据库引擎及其支持组件,而不应用于客户端工具。如果安装了多个实例,则每个实例都将获得各自唯一的一套:
系统和用户数据库。
sql
server
和
sql
server
代理服务。对于默认实例,服务名仍为
mssqlserver
和
sqlserveragent。对于命名实例,服务名改为
mssql$instancename
和
sqlagent$instancename,使得这些服务与服务器上的其它实例分开启动和停止。可使用相关联的
sql
server
服务启动和停止不同实例的数据库引擎。sql
server
代理服务管理相关联的数据库引擎实例的调度事件。
与数据库引擎、sql
server
和
sql
server
代理服务相关联的注册表键。
‘柒’ 如何跨实例查询sql
Exec sp_droplinkedsrvlogin DBVIP,Null
Exec sp_dropserver DBVIP
EXEC sp_addlinkedserver
@server='DBVIP',--被访问的服务器别名
@srvproct='',
@provider='SQLOLEDB',
@datasrc="/Server2" --要访问的服务器
EXEC sp_addlinkedsrvlogin
'DBVIP', --被访问的服务器别名
'false',
NULL,
'sa', --帐号
'thankyoubobby' --密码
Select * from DBVIP.pubs.dbo.orders
--查看当前链接情况:
select * from sys.servers;
--使用 sp_helpserver 来显示可用的服务器
Exec sp_helpserver
--删除已经存在的某个链接
Exec sp_droplinkedsrvlogin 服务器别名,Null
Exec sp_dropserver 服务器别名
--使用sp_addlinkedserver来增加链接
EXEC sp_addlinkedserver
@server='192.168.2.66',--被访问的服务器别名(习惯上直接使用目标服务器IP,或取个别名如:JOY)
@srvproct='',
@provider='SQLOLEDB',
@datasrc='192.168.2.66' --要访问的服务器
--使用sp_addlinkedsrvlogin 来增加用户登录链接
EXEC sp_addlinkedsrvlogin
'192.168.2.66', --被访问的服务器别名(如果上面sp_addlinkedserver中使用别名JOY,则这里也是JOY)
'false',
NULL,
'sa', --帐号
'test123' --密码
使用举例(访问目标服务器上的数据库Music,查看其中表test的内容):
如果建立链接时的别名是目标服务器IP,即192.168.2.66
则:
select * from [192.168.2.66].[Music].dbo.test
如果建立链接时的别名是JOY,
则:
select * from [JOY].[Music].dbo.test
可能会遇到的问题:
exec sp_dropserver 'JOY'执行失败,
报错信息:仍有对服务器 'JOY' 的远程登录或链接登录。
解决方法:
exec sp_droplinkedsrvlogin 'JOY',null
exec sp_dropserver 'JOY'
‘捌’ SqlServer如何跨实例访问数据库
在我们日常使用SQL Server数据库时,经常遇到需要在实例Instance01中跨实例访问Instance02中的数据。例如在做数据迁移时,如下语句:
insert into Instance01.DB01.dbo.Table01
select * from Instance02.DB01.dbo.Table01
普通情况下,这样做是不允许的,因为SQL Server默认不可以跨实例访问数据。解决方案是使用存储过程sp_addlinkedserver进行实例注册。
sp_addlinkedserver在MSDN中的定义为:
sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproct= ] 'proct_name' ]
[ , [ @provider= ] 'provider_name' ]
[ , [ @datasrc= ] 'data_source' ]
[ , [ @location= ] 'location' ]
[ , [ @provstr= ] 'provider_string' ]
[ , [ @catalog= ] 'catalog' ]
例如:在Instance01实例中,执行如下SQL语句
EXEC sp_addlinkedserver ‘Instance02’ //只写第一个参数即可,默认情况下,注册的是SQL Server数据库,其他参数用法详见MSDN。
如果你的两个实例在同一个域中,且Instance01与Instance02有共同的域登陆帐号,那么经过上面的注册后,前面的insert语句就可以执行了。否则,还需要对注册的远程实例进行登陆帐号注册,在Instance01实例中,执行如下SQL语句
EXEC sp_addlinkedsrvlogin 'InstanceName','true' //使用集成认证访问远程实例
或者 EXEC sp_addlinkedsrvlogin 'InstanceName','false','TJVictor,'sa','Password1' //使用Windows认证访问远程实例,当用户以TJVictor用户登陆Instance01实例访问Instance02时,默认把TJVictor映射成sa,且密码为Password1
经过 sp_addlinkedserver实例注册和sp_addlinkedsrvlogin登陆帐户注册后,就可以在Instance01中直接访问Instance02中的数据库数据了。
如果还无法访问,请检查本机DNS是否可以解析远程数据库的实例名。如果无法解析,可以在EXEC sp_addlinkedserver ‘Instance02’中把Instance02换为IP,或者在hosts文件中,自己建立相应DNS映射。