当前位置:首页 » 存储配置 » 存储依赖源

存储依赖源

发布时间: 2022-07-29 09:06:48

1. 如何查找存储过程procere所依赖对象的有效性

1、ALTER PROC 期望找到现存的存储过程,而CERATE不是。 2、ALTER PROC 保留了已经建立的存储过程的任何权限。它在系统对象中保留了相同的对象ID并允许保留依赖关系。例如,如果过程A调用过程B,并删除和重新创建了过程B,那么就不能再看到这两...

2. 关于存储过程中连接数据库问题

存储过程的概念
sql Server提供了一种方法,它可以将一些固定的操作集中起来由SQL Server数据库服务器来完成,以实现某个任务,这种方法就是存储过程。
存储过程是SQL语句和可选控制流语句的预编译集合,存储在数据库中,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其他强大的编程功能。
在SQL Server中存储过程分为两类:即系统提供的存储过程和用户自定义的存储过程。

可以出于任何使用SQL语句的目的来使用存储过程,它具有以下优点:
可以在单个存储过程中执行一系列SQL语句。
可以从自己的存储过程内引用其他存储过程,这可以简化一系列复杂语句。
存储过程在创建时即在服务器上进行编译,所以执行起来比单个SQL语句快,而且减少网络通信的负担。
安全性更高。
创建存储过程

在SQL Server中,可以使用三种方法创建存储过程 :
①使用创建存储过程向导创建存储过程。
②利用SQL Server 企业管理器创建存储过程。
③使用Transact-SQL语句中的CREATE PROCEDURE命令创建存储过程。

下面介绍使用Transact-SQL语句中的CREATE PROCEDURE命令创建存储过程
创建存储过程前,应该考虑下列几个事项:
①不能将 CREATE PROCEDURE 语句与其它 SQL 语句组合到单个批处理中。
②存储过程可以嵌套使用,嵌套的最大深度不能超过32层。
③创建存储过程的权限默认属于数据库所有者,该所有者可将此权限授予其他用户。
④存储过程是数据库对象,其名称必须遵守标识符规则。
⑤只能在当前数据库中创建存储过程。
⑥ 一个存储过程的最大尺寸为128M。

使用CREATE PROCEDURE创建存储过程的语法形式如下:

QUOTE:
CREATE PROC[EDURE]procere_name[;number][;number]
[{@parameter data_type}[VARYING][=default][OUTPUT]][,...n]
WITH
{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}]
[FOR REPLICATION]
AS sql_statement [ ...n ]

用CREATE PROCEDURE创建存储过程的语法参数的意义如下:

procere_name:用于指定要创建的存储过程的名称。
number:该参数是可选的整数,它用来对同名的存储过程分组,以便用一条 DROP PROCEDURE 语句即可将同组的过程一起除去。
@parameter:过程中的参数。在 CREATE PROCEDURE 语句中可以声明一个或多个参数。
data_type:用于指定参数的数据类型。
VARYING:用于指定作为输出OUTPUT参数支持的结果集。
Default:用于指定参数的默认值。
OUTPUT:表明该参数是一个返回参数。

例如:下面创建一个 简单的存储过程proctinfo,用于检索产品信息。
USE Northwind
if exists(select name from sysobjects
where name='proctinfo' and type = 'p')
drop procere proctinfo
GO

create procere proctinfo
as
select * from procts
GO
通过下述sql语句执行该存储过程:execute proctinfo
即可检索到产品信息。

执行存储过程

直接执行存储过程可以使用EXECUTE命令来执行,其语法形式如下:
[[EXEC[UTE]]
{ [@return_status=]
{procere_name[;number]|@procere_name_var} [[@parameter=]{value|@variable[OUTPUT]|[DEFAULT]}
[,...n]
[ WITH RECOMPILE ]

使用 EXECUTE 命令传递单个参数,它执行 showind 存储过程,以 titles 为参数值。showind 存储过程需要参数 (@tabname),它是一个表的名称。其程序清单如下:
EXEC showind titles
当然,在执行过程中变量可以显式命名:
EXEC showind @tabname = titles
如果这是 isql 脚本或批处理中第一个语句,则 EXEC 语句可以省略:
showind titles或者showind @tabname = titles

下面的例子使用了默认参数
USE Northwind
GO
CREATE PROCEDURE insert_Procts_1
( @SupplierID_2 int,
@CategoryID_3 int,
@ProctName_1 nvarchar(40)='无')
AS INSERT INTO Procts
(ProctName,SupplierID,CategoryID)
VALUES
(@ProctName_1,@SupplierID_2,@CategoryID_3)
GO
exec insert_Procts_1 1,1
Select * from Procts where SupplierID=1 and CategoryID=1
GO

下面的例子使用了返回参数
USE Northwind
GO
CREATE PROCEDURE query_procts
( @SupplierID_1 int,
@ProctName_2 nvarchar(40) output)
AS
select @ProctName_2 = ProctName from procts
where SupplierID = @SupplierID_1

执行该存储过程来查询SupplierID为1的产品名:
declare @proct nvarchar(40)
exec query_procts 1,@proct output
select '产品名'= @proct
go

查看存储过程
存储过程被创建之后,它的名字就存储在系统表sysobjects中,它的源代码存放在系统表syscomments中。可以使用使用企业管理器或系统存储过程来查看用户创建的存储过程。

使用企业管理器查看用户创建的存储过程

在企业管理器中,打开指定的服务器和数据库项,选择要创建存储过程的数据库,单击存储过程文件夹,此时在右边的页框中显示该数据库的所有存储过程。用右键单击要查看的存储过程,从弹出的快捷菜单中选择属性选项,此时便可以看到存储过程的源代码。

使用系统存储过程来查看用户创建的存储过程

可供使用的系统存储过程及其语法形式如下:
sp_help:用于显示存储过程的参数及其数据类型
sp_help [[@objname=] name]
参数name为要查看的存储过程的名称。
sp_helptext:用于显示存储过程的源代码
sp_helptext [[@objname=] name]
参数name为要查看的存储过程的名称。
sp_depends:用于显示和存储过程相关的数据库对象
sp_depends [@objname=]’object’
参数object为要查看依赖关系的存储过程的名称。
sp_stored_proceres:用于返回当前数据库中的存储过程列表

修改存储过程

存储过程可以根据用户的要求或者基表定义的改变而改变。使用ALTER PROCEDURE语句可以更改先前通过执行 CREATE PROCEDURE 语句创建的过程,但不会更改权限,也不影响相关的存储过程或触发器。其语法形式如下:
ALTERPROC[EDURE]procere_name[;number]
[{@parameterdata_type}
[VARYING][=default][OUTPUT]][,...n] [WITH
{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}]
[FOR REPLICATION]
AS
sql_statement [ ...n ]

重命名和删除存储过程

1. 重命名存储过程
修改存储过程的名称可以使用系统存储过程sp_rename,其语法形式如下:
sp_rename 原存储过程名称,新存储过程名称
另外,通过企业管理器也可以修改存储过程的名称。

删除存储过程

删除存储过程可以使用DROP命令,DROP命令可以将一个或者多个存储过程或者存储过程组从当前数据库中删除,其语法形式如下:
drop procere {procere} [,…n]
当然,利用企业管理器也可以很方便地删除存储过程。

存储过程的重新编译

在我们使用了一次存储过程后,可能会因为某些原因,必须向表中新增加数据列或者为表新添加索引,从而改变了数据库的逻辑结构。这时,需要对存储过程进行重新编译,SQL Server提供三种重新编译存储过程的方法 :
1、在建立存储过程时设定重新编译
语法格式:CREATE PROCEDURE procere_name WITH RECOMPILE AS sql_statement
2、在执行存储过程时设定重编译
语法格式: EXECUTE procere_name WITH RECOMPILE
3、通过使用系统存储过程设定重编译
语法格式为: EXEC sp_recompile OBJECT

系统存储过程与扩展存储过程

1.系统存储过程
系统存储过程存储在master数据库中,并以sp_为前缀,主要用来从系统表中获取信息,为系统管理员管理SQL Server提供帮助,为用户查看数据库对象提供方便。比如用来查看数据库对象信息的系统存储过程sp_help、显示存储过程和其它对象的文本的存储过程sp_helptext等。

2.扩展存储过程:
扩展存储过程以xp_为前缀,它是关系数据库引擎的开放式数据服务层的一部分,其可以使用户在动态链接库(DLL)文件所包含的函数中实现逻辑,从而扩展了Transact-SQL的功能,并且可以象调用Transact-SQL过程那样从Transact-SQL语句调用这些函数。
例: 利用扩展存储过程xp_cmdshell为一个操作系统外壳执行指定命令串,并作为文本返回任何输出。
执行代码:
use master
exec xp_cmdshell 'dir *.exe'
执行结果返回系统目录下的文件内容文本信息。

最后给大家举一个例子:

QUOTE:
/**
1、 在Northwind数据库中,创建一个带查询参数的存储过程,
要求在输入一个定购金额总额@total时,查询超出该值的所
有产品的相关信息,包括产品名称和供应商名称、单位数量、
单价、以及该产品的定购金额总额,并通过一个输出参数返回
满足查询条件的产品数
**/

IF exists (select * from SysObjects where name='more_than_total' and type='p')
drop procere more_than_total
go
CREATE PROCEDURE More_Than_Total
@total money = 0
AS
Declare @amount smallint
BEGIN
select distinct
P.proctName,
S.contactName,
P.UnitPrice

from Procts P inner join [order Details] O
on p.proctID=o.proctID inner join suppliers s
on p.supplierID=s.SupplierID
where O.proctID in
(select proctID
from [order Details]
group by proctId
having sum(quantity*unitprice)>@total
)
END
GO

3. 构建docker镜像,download依赖包存储问题

  1. Dockerfile 中每一条指令对应了image中的一层。从上到下,如果有一层发生变化,那么这一层以后的层都要重新构建。 所以,在Docker 构建镜像的最佳实践,是要求把不经常变化的层放在Dockerfile 配置的最上层。 对于那些 一直不变的文件,应该做成base镜像,构建新镜像的时候从这个base镜像开始构建。

  2. 可以尝试一下添加一条指令,比如 RUN touch /home/test.txt ,看看从构建的镜像运行的容器有没有这个文件。

4. 我是搞服务器存储方面的,存储的就是数据,而数据依赖数据库,但是我从来没有接触过数据库

在本机安装一个Oracle就可以了,CPU 1GHz,内存2G就可以了。下载Oralce10g官方文档,从概念入手,再到PL/SQL (建议),这样容易些;数据库管理、优化需要有足够基础,建议放到有一定基础后再学习。

5. GBase 8c 有存储依赖关系的位置吗

有,通过pg_depend系统表。这是用于数据库对象之间的依赖关系。从参考资料查到的,表列包括:classid(依赖对象所在的系统目录OID)、objid(指定依赖对象的OID)、objsubid(对于一个表列,这里是列号)、refclassid(被引用对象所在的系统目录的OID)、refobjid(指定被引用对象的OID)、refobjsubid(列号)、deptype(定义此依赖关系语义的一个代码)。

6. 大数据中高效运算和低耗能存储依赖以下哪些技术

主要由以下三点作用:

第一,对大数据的处理分析正成为新一代信息技术融合应用的结点。移动互联网、物联网、社交网络、数字家庭、电子商务等是新一代信息技术的应用形态,这些应用不断产生大数据。云计算为这些海量、多样化的大数据提供存储和运算平台。通过对不同来源数据的管理、处理、分析与优化,将结果反馈到上述应用中,将创造出巨大的经济和社会价值。

第二,大数据是信息产业持续高速增长的新引擎。面向大数据市场的新技术、新产品、新服务、新业态会不断涌现。在硬件与集成设备领域,大数据将对芯片、存储产业产生重要影响,还将催生一体化数据存储处理服务器、内存计算等市场。在软件与服务领域,大数据将引发数据快速处理分析、数据挖掘技术和软件产品的发展。

第三,大数据利用将成为提高核心竞争力的关键因素。各行各业的决策正在从“业务驱动” 转变“数据驱动”。
-

7. 简述虚拟化存储技术的三种实现方法及工作原理

从系统的观点看,有三种主要的存储虚拟化方法:

  1. 基于主机的虚拟存储;

  2. 基于存储设备的虚拟存储;

  3. 基于网络的虚拟存储。


方法1:基于主机的虚拟存储

基于主机的虚拟存储依赖于代理或管理软件,它们安装在一个或多个主机上,实现存储虚拟化的控制和管理。由于控制软件是运行在主机上,这就会占用主机的处理时间。因此,这种方法的可扩充性较差,实际运行的性能不是很好。基于主机的方法也有可能影响到系统的稳定性和安全性,因为有可能导致不经意间越权访问到受保护的数据。这种方法要求在主机上安装适当的控制软件,因此一个主机的故障可能影响整个SAN系统中数据的完整性。软件控制的存储虚拟化还可能由于不同存储厂商软硬件的差异而带来不必要的互操作性开销,所以这种方法的灵活性也比较差。

但是,因为不需要任何附加硬件,基于主机的虚拟化方法最容易实现,其设备成本最低。使用这种方法的供应商趋向于成为存储管理领域的软件厂商,而且目前已经有成熟的软件产品。这些软件可以提供便于使用的图形接口,方便地用于SAN的管理和虚拟化,在主机和小型SAN结构中有着良好的负载平衡机制。从这个意义上看,基于主机的存储虚拟化是一种性价比不错的方法。


方法2:基于存储设备的虚拟化

基于存储设备的存储虚拟化方法依赖于提供相关功能的存储模块。如果没有第三方的虚拟软件,基于存储的虚拟化经常只能提供一种不完全的存储虚拟化解决方案。对于包含多厂商存储设备的SAN存储系统,这种方法的运行效果并不是很好。依赖于存储供应商的功能模块将会在系统中排斥JBODS(Just a Bunch of Disks,简单的硬盘组)和简单存储设备的使用,因为这些设备并没有提供存储虚拟化的功能。当然,利用这种方法意味着最终将锁定某一家单独的存储供应商。

基于存储的虚拟化方法也有一些优势:在存储系统中这种方法较容易实现,容易和某个特定存储供应商的设备相协调,所以更容易管理,同时它对用户或管理人员都是透明的。但是,我们必须注意到,因为缺乏足够的软件进行支持,这就使得解决方案更难以客户化(customzing)和监控。


方法3:基于网络的虚拟存储

基于网络的虚拟化方法是在网络设备之间实现存储虚拟化功能,具体有下面几种方式:

1. 基于互联设备的虚拟化

基于互联设备的方法如果是对称的,那么控制信息和数据走在同一条通道上;如果是不对称的,控制信息和数据走在不同的路径上。在对称的方式下,互联设备可能成为瓶颈,但是多重设备管理和负载平衡机制可以减缓瓶颈的矛盾。同时,多重设备管理环境中,当一个设备发生故障时,也比较容易支持服务器实现故障接替。但是,这将产生多个SAN孤岛,因为一个设备仅控制与它所连接的存储系统。非对称式虚拟存储比对称式更具有可扩展性,因为数据和控制信息的路径是分离的。

基于互联设备的虚拟化方法能够在专用服务器上运行,使用标准操作系统,例如Windows、Sun Solaris、Linux或供应商提供的操作系统。这种方法运行在标准操作系统中,具有基于主机方法的诸多优势--易使用、设备便宜。许多基于设备的虚拟化提供商也提供附加的功能模块来改善系统的整体性能,能够获得比标准操作系统更好的性能和更完善的功能,但需要更高的硬件成本。

但是,基于设备的方法也继承了基于主机虚拟化方法的一些缺陷,因为它仍然需要一个运行在主机上的代理软件或基于主机的适配器,任何主机的故障或不适当的主机配置都可能导致访问到不被保护的数据。同时,在异构操作系统间的互操作性仍然是一个问题。

3. 基于路由器的虚拟化

基于路由器的方法是在路由器固件上实现存储虚拟化功能。供应商通常也提供运行在主机上的附加软件来进一步增强存储管理能力。在此方法中,路由器被放置于每个主机到存储网络的数据通道中,用来截取网络中任何一个从主机到存储系统的命令。由于路由器潜在地为每一台主机服务,大多数控制模块存在于路由器的固件中,相对于基于主机和大多数基于互联设备的方法,这种方法的性能更好、效果更佳。由于不依赖于在每个主机上运行的代理服务器,这种方法比基于主机或基于设备的方法具有更好的安全性。当连接主机到存储网络的路由器出现故障时,仍然可能导致主机上的数据不能被访问。但是只有联结于故障路由器的主机才会受到影响,其他主机仍然可以通过其他路由器访问存储系统。路由器的冗余可以支持动态多路径,这也为上述故障问题提供了一个解决方法。由于路由器经常作为协议转换的桥梁,基于路由器的方法也可以在异构操作系统和多供应商存储环境之间提供互操作性。

8. 计算机内存储器一般用什么作为存储介质

计算机内存中储存器一般用ROM作为储存介质。

随机存取存储器(英语:Random Access Memory,缩写:RAM),也叫主存,是与CPU直接交换数据的内部存储器。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。

RAM工作时可以随时从任何一个指定的地址写入(存入)或读出(取出)信息。它与ROM的最大区别是数据的易失性,即一旦断电所存储的数据将随之丢失。RAM在计算机和数字系统中用来暂时存储程序、数据和中间结果。

(8)存储依赖源扩展阅读

RAM的特点为:

1、随机存取

所谓“随机存取”,指的是当存储器中的数据被读取或写入时,所需要的时间与这段信息所在的位置或所写入的位置无关。相对的,读取或写入顺序访问存储设备中的信息时,其所需要的时间与位置就会有关系。它主要用来存放操作系统、各种应用程序、数据等。

当RAM处于正常工作时,可以从RAM中读出数据,也可以往RAM中写入数据。与ROM相比较,RAM的优点是读/写方便、使用灵活,特别适用于经常快速更换数据的场合。

2、易失性

当电源关闭时,RAM不能保留数据。如果需要保存数据,就必须把它们写入一个长期的存储设备中(例如硬盘)。

RAM的工作特点是通电后,随时可在任意位置单元存取数据信息,断电后内部信息也随之消失。

3、对静电敏感

正如其他精细的集成电路,随机存取存储器对环境的静电荷非常敏感。静电会干扰存储器内电容器的电荷,引致数据流失,甚至烧坏电路。故此触碰随机存取存储器前,应先用手触摸金属接地。

4、访问速度

现代的随机存取存储器几乎是所有访问设备中写入和读取速度最快的,存取延迟和其他涉及机械运作的存储设备相比,也显得微不足道。

5、需要刷新(再生)

现代的随机存取存储器依赖电容器存储数据。电容器充满电后代表1(二进制),未充电的代表0。由于电容器或多或少有漏电的情形,若不作特别处理,数据会渐渐随时间流失。

刷新是指定期读取电容器的状态,然后按照原来的状态重新为电容器充电,弥补流失了的电荷。需要刷新正好解释了随机存取存储器的易失性。

热点内容
万魔斩脚本 发布:2024-10-06 08:23:18 浏览:876
华强北耳机连安卓手机下什么软件 发布:2024-10-06 08:21:53 浏览:251
儿科发现传染病的应急演练脚本 发布:2024-10-06 08:21:48 浏览:598
玩王者荣耀的时候要买哪个配置 发布:2024-10-06 08:19:41 浏览:620
imovie怎么清理缓存 发布:2024-10-06 08:14:30 浏览:17
python字典list 发布:2024-10-06 08:14:26 浏览:578
amhip访问 发布:2024-10-06 08:03:54 浏览:437
joy加密 发布:2024-10-06 07:53:27 浏览:201
结构是由哪种脚本语言填写的 发布:2024-10-06 07:24:27 浏览:744
客户端反编译教学 发布:2024-10-06 07:10:42 浏览:783