下面是小编给大家带来自定义链接后端数据库数据库教程,本文共7篇,一起来阅读吧,希望对您有所帮助。
篇1:自定义链接后端数据库数据库教程
代码很简单的,我这里的例子是从文本框里输入新的数据库路径,然后更新链接,你参考一下,再改。
Private Sub Command0_Click
On Error GoTo Err_Command0_Click
Dim cat As ADOX.Catalog
Dim tdf As ADOX.Table
Me.txtDBnewNAME.SetFocus
Set cat = New ADOX.Catalog
Set cat.ActiveConnection = CurrentProject.Connection
Set tdf = cat.Tables(“mytable”)
tdf.Properties(“jet oledb:link datasource”) = Me.txtDBnewNAME.Text
Exit_Command0_Click:
Exit Sub
Err_Command0_Click:
MsgBox Err.Description
Resume Exit_Command0_Click
End Sub
篇2:修改自定义数据类型精度数据库教程
数据|数据类型
/*--修改自定义数据类型精度的示例
自定义数据类型一旦被引用,就不能再修改和删除,如果要修改数据的精度,就非常麻烦,下面的示例演示了如何修改
假设要修改的自定义变量名为aa
--*/
--1.修改自定义变量类型的名称
exec sp_rename 'aa','aa_bak','USERDATATYPE'
go
--2.新增自定义变量(按新的精度)
EXEC sp_addtype N'aa', N'numeric(20,2)', N'not null'
go
--3.修改表,使用新增的自定义变量
declare @s varchar(8000)
declare tb cursor local
for select 'alter table ['+object_name(a.id)+'] alter column ['
+a.name+'] aa'
from syscolumns a join systypes b on a.xusertype=b.xusertype
where b.name='aa_bak'
open tb
fetch next from tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch next from tb into @s
end
close tb
deallocate tb
篇3:用户自定义的数据库修复数据库教程
数据|数据库
用户自定义的数据库恢复
一、 自动应用重做日志
1、 利用SET AUTORECOVERY命令自动应用重做日志
完成对数据文件的修复操作
SQL>STARTUP MOUNT; 启动实例并加载数据库
SQL>SET AUTORECOVERY ON 启用重做日志自动应用功能
SQL>RECOVER DATABASE 恢复指定表空间、数据文件或整个数据库
SQL>ALTER DATABASE OPEN; 完成恢复后打开数据库
2、 利用RECOVERY AUTOMATIC命令自动应用重做日志
完成对数据文件的修复操作
SQL>STARTUP MOUNT; 启动实例并加载数据库
SQL>RECOVER AUTOMATIC DATABASE
SQL>ALTER DATABASE OPEN; 完成恢复后打开数据库
二、 不归档模式下的数据库介质恢复
1、 将数据库恢复到原来的位置上
SQL>SHUTDOWN IMMEDIATE 如果数据库仍然处于打开状态,关闭数据库;
将数据库文件恢复到原来的位置上,利用最近一次建立的一致性完全备份对整个数据库进行恢复,必须对所有的数据文件与控制文件进行修复;
SQL>RECOVER DATABASE UNTIL CANCEL
SQL>CANCEL
SQL>ALTER DATABASE OPEN RESETLOGS;将当前重做日志顺序号设置为1,
2、 将数据库恢复到新的位置上
SQL>SHUTDOWN IMMEDIATE 如果数据库仍然处于打开状态,关闭数据库;
将数据库文件恢复到新的位置上,利用最近一次建立的一致性完全备份对整个数据库进行恢复,必须对所有的数据文件与控制文件进行修复;
对初始化参数文件中的CONTROL_FILES参数进行编辑,使它执行保存在新位置中修复后的控制文件;
SQL>STARTUP MOUNT
如果修复后的数据库文件处于新的位置,必须利用ALTER DATABASE RENAME FILE语句对控制文件进行修改,使它指向新位置中修复后的数据文件。如:
SQL>ALTER DATABASE RENAME FILE ‘I:\\ora9i\\oradata ystem01.dbf’ TO ‘K:\\oracle\\oradata ystem01.dbf’;
SQL>RECOVER DATABASE UNTIL CANCEL
SQL>CANCEL
SQL>ALTER DATABASE OPEN RESETLOGS;将当前重做日志顺序号设置为1。
三、 归档模式下的完全介质恢复
1、 关闭状态下的完全恢复
SQL>SHUTDOWN ABORT(如果数据库处于打开状态,将它强行关闭)
将数据文件恢复到原来的位置上,如果介质故障无法排除,需要将数据文件恢复到其它位置上;
利用备份修复丢失或损坏的数据文件,也可利用ALTER DATABASE CREATE DATAFILE 语句重建一个空白的数据文件替换对视或损坏的数据文件;
SQL>STARTUP MOUNT
如果修复后的数据文件不在原来的位置上,需要使用ALTER DATABASE RENAME FILE …TO …语句在控制文件中更新它们的信息
SQL>SELECT name,status FROM V$DATAFILE;查询数据文件的名称和状态
SQL>ALTER DATABASE DATAFILE … ONLINE;将脱机数据文件改未联机
SQL>RECOVER DATABASE 或 SQL>RECOVER TABLESPACE users
或 SQL>RECOVER DATAFILE ‘I:\\ora9i\\oradata\\users0.dbf;
SQL>ALTER DATABASE OPEN;
2、 打开状态下的完全介质恢复
SQL>SELECT d.file# f#,d.name,d.status,h.status from v$datafile d,v$datafile_header h
WHERE d.file#=h.file#;查询哪些数据文件被自动设置为脱机状态;
SQL>ALTER TABLESPACE users OFFLINE TEMPORARY;将包含损坏数据文件的表空间设置为脱机状态;
将数据文件恢复到原来的位置上,如果介质故障无法排除,需要将数据文件恢复到其它位置上;
利用备份修复丢失或损坏的数据文件;
如果修复后的数据文件不在原来的位置上,需要使用ALTER DATABASE RENAME FILE …TO …语句在控制文件中更新它们的信息
SQL>RECOVER TABLESPACE users AUTOMATIC对包含损坏数据文件的脱机表空间进行恢复;
SQL>ALTER TABLESPACE users ONLINE;
四、 归档模式下的不完全介质恢复
1、 不完全恢复的操作准则;
在恢复前后都对数据库进行完全备份
完成不完全介质恢复后,检查数据库是否已经恢复到了目标时刻下的状态;
完成不完全介质恢复后,将归档重做日志文件移动到其它位置保存,
2、 基于时间的不完全恢复
对数据库进行一次完全备份,包括控制文件和所有的联机重做日志文件
SQL>SHUTDOWN ABORT
确定不完全介质恢复的目标时间,即你需要将数据库恢复到哪个时刻下的状态,然后确定需要使用哪些备份来对数据进行修复,数据库修复所使用的控制文件备份应当能够正确反映出目标时刻下数据库的物理结构,所使用的数据文件备份应当是在目标时刻之前创建的,而且必须修复所有的数据文件,
如果没有在目标时刻之前建立的数据文件备份,需要重新创建空白的数据文件
如果在数据库中包含在目标时刻之后建立的数据文件,不要对这个数据文件进行修复,因为在完成不完全恢复后的数据库中根本不应当存在这个数据文件;
将数据文件恢复到原来的位置上,如果介质故障无法排除,则恢复到其它位置上;
利用选定的备份文件修复所有的控制文件和数据文件;
SQL>STARTUP MOUNT 启动实例并加载数据库;
如果修复后的数据文件不在它们原来的位置上,需使用ALTER DATABASE RENAME FILE … TO …语句在控制文件中更新它们的信息;
SQL>SELECT name,status FROM V$DATAFILE;确定所有数据文件都处于联机
SQL>ALTER DATABASE DATAFILE … ONLINE;将数据文件恢复为联机;
SQL>RECOVER DATABASE UNTIL TIME ‘-02-01:12:30:30’
如果控制文件是利用备份修复的,必须在RECOVER名利中指定USING BACKUP CONTROLFILE子句;
SQL>ALTER DATABASE OPEN RESETLOGS;
立即对数据库进行一次完全备份。
3、 基于撤销的不完全恢复
SQL>RECOVER DATABASE UNTIL CANCEL
其它步骤同基于时间的不完全恢复
4、 基于SCN的不完全恢复
在进行基于SCN的不完全恢复时,oracle会在应用了所有具有小于等于指定SCN的事务的重做记录之后终止恢复过程
RESETLOGS选项
在如下三种情况下,必须使用RESETLOGS选项打开数据库:
1、 在执行任何类型的不完全介质恢复之后;
2、 在使用备份修复控制文件后(在RECOVER命令中使用USING BACKUP CONTROLFILE子句);
在没有联机重做日志文件备份的情况下对不归档数据库进行完全恢复之后。
篇4:Excel教程:导入数据与链接数据库
Excel 2007拥 有强大的数据整理、分析能力,能够帮助我们完成日常工作中大部分的数据处理任务,要整理、分析数据,首先必须把数据装进Excel里面。除了逐一录入而 外,导入、连接数据库也是让Excel获得数据信息的重要方法。今天的专题主要以最新的Excel 2007为对象,介绍如何快速把各种数据导入Excel中,以及如何与外部数据库进行连接。另外,我们还推荐一些与Excel数据处理的相关内容。
Excel工作簿连接(导入)外部数据的方法
Excel和Access间复制、导入和导出数据
使用向导将数据从文本文件导入Excel中
从SharePoint列表往Excel导入数据
往Excel中导入文本数据的三种方法
掌握要领 实现Excel动态链接外部数据库
编辑管理Excel工作簿到外部数据的连接
实时更新Excel文档外部数据源的数据
使用Microsoft Query检索Excel外部数据
篇5:什么是mysql左链接查询 如何使用?数据库教程
MySQL左连接查询是连接查询中的一种方式,下面就为您介绍MySQL左连接查询中的一些问题谈论,如果您感兴趣的话,不妨一看,
我这里所说的主表是指在连接查询里MySQL以哪个表为主进行查询。比如说在MySQL左连接查询里,一般来说左表就是主表,但这只是经验之谈,很多时候经验主义是靠不住的,为了说明问题,先来个例子,建两个演示用的表categories和posts:
CREATETABLEIFNOTEXISTS `categories` (`id`int(10) unsignedNOTNULLAUTO_INCREMENT,`name`varchar(15)NOTNULL,`created` datetimeNOTNULL,PRIMARYKEY(`id`),KEY`name` (`name`));CREATETABLEIFNOTEXISTS `posts` (`id`int(10) unsignedNOTNULLAUTO_INCREMENT,`category_id`int(10) unsignedNOTNULL,`title`varchar(100)NOTNULL,`content`varchar(200)NOTNULL,`created` datetimeNOTNULL,PRIMARYKEY(`id`),KEY`category_id` (`category_id`),KEY`created` (`created`),KEY`category_id_created` (`category_id`, `created`));
先注意一下每个表的索引情况,以后会用到,记得随便插入一点测试数据,不用太多,但怎么也得两行以上,然后执行以下
SQL:EXPLAIN SELECT *FROM postsLEFT JOIN categories ONposts.category_id=categories.idWHERE categories.name LIKE 'foobar%'ORDER BY posts.created DESC
结果如下所示:
table key Extracategories name Using where; Using temporary; Using filesortposts category_id
在join查询的explain的结果中,第一行表示的表就是主表,
所以说在此查询里categories是主表,而在我们的经验里,LEFT JOIN查询里,左表(posts表)才应该是主表,这产生一个根本的矛盾,MySQL之所以这样处理,是因为在我们的WHERE部分,查询条件是按照categories表的字段来进行筛选的,且categories表刚好存在合适的索引,所以在查询时把categories表作为主表更有利于缩小结果集。
那explain结果中的Using temporary; Using filesort又是为什么呢,为什么created或category_id_created索引无效呢?这是因为主表是categories表,从表是posts表,而我们使用从表的字段去ORDER BY,这通常不是一个好选择,最好改成主表字段。不过很多时候改不了,那就没招了。
再看一个比较怪异的例子:
EXPLAIN SELECT *FROM postsLEFT JOIN categories ONposts.category_id=categories.idWHEREcategories.id= ‘一个已经存在的ID’ORDER BY posts.created DESC
这个例子里posts表仍然是从表,但是按照从表排序的结果却没有出现文件排序和临时表,这是因为已经确定了categories.id,所以主表相当于一个只有一行数据的常量表了,从表根据category_id_created索引在连接的同时自然就得到排序后的结果。但换个角度看,既然categories.id都是确定的了,那类似这样的需求,我们一般就不会再使用LEFT JOIN查询了,而会分成两个独立的查询去检索categories和posts才对。
主观上一旦搞错了主表,可能怎么调整索引都得不到高效的SQL,所以在写SQL时,比如说在写MySQL左连接查询时,如果希望左表是主表,那么就要保证在WHERE语句里的查询条件尽可能多的使用左表字段,进而,一旦确定了主表,也最好只通过主表字段去ORDER BY。
注意:大多数情况下,使用从表字段去排序都是低效的,我最初的例子误导了大家,已更正。
篇6:利用拆分后的后端数据库保存不同年份的数据数据库教程
面向:初学者
目的:如果一年的数据较多,希望在分年的数据库中保存数据
知识点:1.数据库拆分
2.文件查找技术
3.文件复制
4.链接表的刷新
步骤: 1.将一些每年都要使用(修改,添加等)的表的名称前两个字母改为共同的(如:Or_业务人员名单,Or_收货人名单等),注意不要是“MS”,“SW”,“US”等系统要使用的字母
2.将数据库拆分(假如前端名称为:出口业务记录.mdb,后端名称为:出口业务记录_dataOrigin.mdb
3.在启动窗体(假如名称为:窗体1)中建立一文本框(假如名称为:所属年份)
4.在窗体1的Open事件和所属年份的AfterUpdate事件中调用下面的“查找文件”过程.
Public Sub 链接
On Error GoTo LJ_error
Dim TABNAME As String
Dim Tab1 As TableDef
Dim MyPath As String
MyPath = Application.CurrentProject.Path
CurrentDb.TableDefs.Refresh '刷新当前数据库中的表对象
If CurrentDb.TableDefs(15).Connect = “;DATABASE=” & MyPath & “\\出口业务记录_data” & FORMs!窗体1!所属年份 & “.mdb” Then
Exit Sub
Else
For Each Tab1 In CurrentDb.TableDefs
TABNAME = Tab1.Name
If Left(TABNAME, 2) “MS” And Left(TABNAME, 2) “SW” And Left(TABNAME, 2) “Us” Then
If Left(TABNAME, 2) = “Or” Then
Tab1.Connect = “;DATABASE=” & MyPath & “\\出口业务记录_dataOrigin.mdb”
Else
Tab1.Connect = “;DATABASE=” & MyPath & “\\出口业务记录_data” & FORMs!窗体1!所属年份 & “.mdb”
End If
Tab1.RefreshLink
End If
Next Tab1
MsgBox FORMs!窗体1!所属年份 & “年的基础数据库连接成功!”
End If
Exit_LJ_error:
Exit Sub
LJ_error:
MsgBox FORMs!窗体1!所属年份 & “年的后端数据库文件不存在!”
Resume Exit_LJ_error
End Sub
Public Sub 查找文件()
Dim MyPath As String
Dim fs As Variant
Dim TABNAME As String
Dim Tab1 As TableDef
MyPath = Application.CurrentProject.Path
Set fs = Application.FileSearch
With fs
.LookIn = MyPath
.SearchSubFolders = True
.Filename = “出口业务记录_data” & FORMs!窗体1!所属年份 & “.mdb”
If .Execute() <= 0 Then
If MsgBox(“没有” & FORMs!窗体1!所属年份 & “年的数据库,是否要创建一个?”, vbYesNo) = vbYes Then
FORMs!窗体1.FORM!版本.FORM.RecordSource = “”
FileCopy MyPath & “\\出口业务记录_dataOrigin.mdb”, MyPath & “\\出口业务记录_data” & FORMs!窗体1!所属年份 & “.mdb”
Else
FORMs!窗体1!所属年份 = Year(Now())
MsgBox “没有” & FORMs!窗体1!所属年份 & “年的数据库!”
Exit Sub
End If
End If
End With
链接
End Sub
4.在窗体1的Close事件中写:
Private Sub FORM_Close()
Dim TABNAME As String
Dim Tab1 As TableDef
Dim MyPath As String
MyPath = Application.CurrentProject.Path
CurrentDb.TableDefs.Refresh '刷新当前数据库中的表对象
If CurrentDb.TableDefs(15).Connect = “;DATABASE=” & MyPath & “\\出口业务记录_data” & Year(Now()) & “.mdb” Then
Exit Sub
Else
For Each Tab1 In CurrentDb.TableDefs
TABNAME = Tab1.Name
If Left(TABNAME, 2) “MS” And Left(TABNAME, 2) “SW” And Left(TABNAME, 2) “Us” Then
If Left(TABNAME, 2) = “Or” Then
Tab1.Connect = “;DATABASE=” & MyPath & “\\出口业务记录_dataOrigin.mdb”
Else
Tab1.Connect = “;DATABASE=” & MyPath & “\\出口业务记录_data” & Year(Now()) & “.mdb”
End If
Tab1.RefreshLink
End If
Next Tab1
End If
End Sub
注意窗体一最好是没有任何绑定控件的切换面板,如果有这样的控件,在更改链接表connect属性和FileCopy之前要设置这些控件的所有***Source(如RcordSource,RowSource等)=“”,完成相关语句后再设置成原来的值.
希望指正!!!
篇7:应用 SQLServer 链接服务器访问远程 Access 数据库数据库教程
access|server|sqlserver|访问|服务器|链接|数据|数据库
Web 开发中,经常要用到 Access 数据库,但是由于 Access 是一种文件型数据库,所以无法跨服务器进行访问。经过笔者的探索,发现可以利用 SQL Server 的链接服务器,把地理上分散的 Access 数据库整合起来,使 Access 数据库具有跨越 Web 服务器群的能力。这样做,还可以使 Access 数据库与 SQL Server,甚至 Oracle 等网络数据库连接起来,实现异构数据库的互连,从而执行分布式的查询、更新、命令和事务。
一、创建链接服务器,连接本地 Access 数据库
创建链接服务器可以用“企业管理器”,也可以执行系统存储过程 sp_addlinkedserver 来完成。用系统存储过程相对快捷一些,格式为:
sp_addlinkedserver '链接服务器名', '产品名', 'Microsoft.Jet.OLEDB.4.0', 'Access数据库路径及文件名'
指定 Microsoft.Jet.OLEDB.4.0 作为 provider_name,指定 Access 数据库文件的完整路径名作为 data_source。.mdb 数据库文件必须驻留在本地服务器上,路径必须是服务器上的有效路径。
例如,本例创建一个名为 mytest 的链接服务器,对 E:\\我的文档\\ 文件夹下名为 DOS.mdb 的 Access 数据库进行操作,则在“SQL查询分析器”中执行:
sp_addlinkedserver 'mytest', 'Access 2000', 'Microsoft.Jet.OLEDB.4.0', 'E:\\我的文档\\DOS.mdb'
二、创建链接服务器登录映射
同样可以用“企业管理器”或存储过程来完成。存储过程的格式为:
sp_addlinkedsrvlogin '链接服务器', false, 'SQLServer登录名', 'admin', NULL
为访问非保密的 Access 数据库,试图访问 Access 数据库的 SQL Server 登录应该有一个为用户 Admin 定义的没有密码的登录映射,下例使得本地用户 sa 可以访问名为 mytest 的链接服务器:
sp_addlinkedsrvlogin 'mytest', false, 'sa', 'admin', NULL
要访问保密的 Access 数据库,需使用注册表编辑器配置注册表,以便使用 Access 的正确的工作组信息文件。使用注册表编辑器向该注册表项中添加 Access 使用的工作组信息文件的完整路径名称:
HKEY_LOCAL_MACHINE OFTWARE\\Microsoft\\Jet\\4.0\\Engines ystemDB
配置了注册表项后,请使用 sp_addlinkedsrvlogin 创建从本地登录到 Access 登录的登录映射:
sp_addlinkedsrvlogin 'mytest', false, 'sa', '[AccessUser]', '[AccessPwd]'
链接服务器和链接服务器登录映射建立完毕,可以在企业管理器里进行查看,
三、链接服务器的测试
可以在“SQL查询分析器”里对创建的链接服务器进行测试。由于 Access 数据库没有目录和架构名称,因此,基于 Access 的链接服务器中的表可以在分布式查询中使用 [linked_server]...[table_name] 的四部分名称进行引用。下例从名为 mytest 的链接服务器中检索 articles 表的所有行:
Select * from mytest...articles
或:Select * from OpenQuery(mytest, 'Select * from .articles')
四、用代码访问链接服务器的 Access 数据库
只有实现用代码访问链接服务器的 Access 数据库,才使得链接服务器发挥了最大的灵活性和实用性。可以使用三中的测试链接服务器的代码建立存储过程,供 Asp 代码调用,也可以直接在 Asp 代码中调用链接服务器,以下是我通过测试的例子:
<%
Dim conn, sSQL, rs
conn=“Provider=sqloledb; server=localhost; uid=sa; pwd=SQLSERVER;” '用户 sa 的密码为 SQLSERVER。可以省略数据库名
on error resume next
sSQL = “select * from mytest...articles”
Set rs = Server.CreateObject(“ADODB.Recordset”)
rs.open sSQL, conn, 1, 1
rs.movefirst
response.write rs(0) & “
”
if err.number0 then
response.write “取数据错误:数据库连接出错,或存取数据表错误!”
else
response.write “OK!”
end if
%>
张庆 2002.10.1 3:58
文档为doc格式