sql语句附加数据库
低版本的数据库不能兼容高版本的
数据库文件
,所以
Sql2008
创建的数据库文件附加不上
Sql2005
.
给你一个方法:
你可以在Sql2008中,将建表语句导出,成功sql脚本,然后将表里面的数据导出到本地access文件里面,然后打开Sql2005,手动创建一个同名的数据库,然后执行该sql脚本,最后将access文件导入到对应的表中即可...
‘贰’ 如何实现SQL的自动安装及自动附加数据库
打包并附加数据库解决方案
一。打包msde
1.解压msde2000
2.将解压后的文件全部打包到安装程序中
3.在wise脚步中插入执行语句。在执行程序设置中:执行程序路径: %MAINDIR%\hello\msde\setup.exe
命令行:sapwd="sa" securitymode=SQL disablenetworkprotocols=0(脚本的位置需要自己定位)
4.这样制作好的安装包在执行安装后会自动安装msde
二。附加数据库
1.在程序执行时判断在C:\Program Files\Microsoft SQL Server\MSSQL\Data目录下是否有我们要附加的数据库文件,即db_Data.MDF和db_Log.LDF
2.如果没有则把两个文件复制到上述目录中
3.复制完成后调用dos命令执行附加数据库的语句winexec(PChar('D:\My.bat'),sw_show); My.bat文件中的内容为osql -S 57c65a1f316b491 -U sa -P sa -i "D:\active.sql"
active.sql是我们要写的SQL脚本,用来附加数据库,内容为Exec sp_attach_db @dbname = N'web', @fileName1=N'C:\Program Files\Microsoft SQL Server\MSSQL\Data\web_Data.MDF', @filename2=N'C:\Program Files\Microsoft SQL Server\MSSQL\Data\web_Log.LDF'
这就是为什么我们要把数据库文件放到上述目录中的原因
4.附加数据库完成
‘叁’ 如何用sql语句附加数据库
应该是
向下兼容
的,2005创建的数据库不能附加到2000吧
顺便说一句,附加数据库的语句应该是
create
database
数据库名
on
name=数据库逻辑名
filename=数据库路径
for
attach
‘肆’ 求助SQL 添加附加数据库 9003 错误 如何解
--方法如下:
--1.我们使用默认方式建立一个供恢复使用的数据库(如pos)。可以在SQL Server
Enterprise Manager里面建立。
--2.停掉数据库服务器。
--3.将刚才生成的数据库的日志文件pos_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件pos_data.mdf。
--4.启动数据库服务器。此时会看到数据库pos的状态为“置疑”。这时候不能对此数据库进行任何操作。
--5.设置数据库允许直接操作系统表。此操作可以在SQL Server Enterprise
Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。
use master
go
exec sp_configure 'allow updates',1
go
reconfigure with override
go
转载,仅供参考。
‘伍’ 如何在查询分析器里面写SQL语句来附加数据库
呵呵,这个使用sp_attach_db
存储过程就可以了,具体的SQL语句如下:
EXEC
sp_attach_db
@dbname
=
N'test',
@filename1
=
N'd:\test_data.mdf',
@filename2
=
N'd:\\test_log.ldf'
go
呵呵,希望能有帮助,^_^
‘陆’ sql附加数据库时错误
1
那你这样
先新建一个
同名的数据库。
2
停止
数据库服务器
将tt_data.mdf覆盖新建的数据这个
数据库文件
3
在
企业管理器
附加数据库
或用楼上的语句附加
你先试一下
如果不行
如果置疑了就会很麻烦,
还有如果这个数据库很重要的话,你给我传过来我帮你!
‘柒’ 查询分析器中使用SQL语句附加数据库
附加数据语句为:
EXECsp_attach_db@dbname=N'DATAName',@filename1=N'D:MSSQLDATADATAName.mdf',@filename2=N'D:MSSQLDATADATAName.ldf'
其中
【DATAName】:数据库名称
【D:MSSQLDATADATAName.mdf】:数据库文件真实物理路径
【D:MSSQLDATADATAName.ldf】:数据库日志文件真实物理路径
‘捌’ 通过SQL语句使用什么命令创建数据库
CREATE DATABASE 为SQl语句,用于创建数据库。
语法
CREATE DATABASEdatabase_name
[ ON
[ < filespec > [,...n] ]
[,< filegroup > [,...n] ]
]
[ LOG ON { < filespec > [,...n] } ]
[ COLLATEcollation_name]
[ FOR LOAD | FOR ATTACH ]
< filespec > ::=
[ PRIMARY ]
([ NAME=logical_file_name,]
FILENAME='os_file_name'
[,SIZE=size]
[,MAXSIZE={max_size| UNLIMITED } ]
[,FILEGROWTH=growth_increment])[,...n]
< filegroup > ::=
FILEGROUPfilegroup_name< filespec > [,...n]
参数
database_name
新数据库的名称。数据库名称在服务器中必须唯一,并且符合标识符的规则。database_name最多可以包含 128 个字符,除非没有为日志指定逻辑名。如果没有指定日志文件的逻辑名,则 Microsoft® SQL Server™ 会通过向database_name追加后缀来生成逻辑名。该操作要求database_name在 123 个字符之内,以便生成的日志文件逻辑名少于 128 个字符。
ON
指定显式定义用来存储数据库数据部分的磁盘文件(数据文件)。该关键字后跟以逗号分隔的 <filespec> 项列表,<filespec> 项用以定义主文件组的数据文件。主文件组的文件列表后可跟以逗号分隔的 <filegroup> 项列表(可选),<filegroup> 项用以定义用户文件组及其文件。
n
占位符,表示可以为新数据库指定多个文件。
LOG ON
指定显式定义用来存储数据库日志的磁盘文件(日志文件)。该关键字后跟以逗号分隔的 <filespec> 项列表,<filespec> 项用以定义日志文件。如果没有指定 LOG ON,将自动创建一个日志文件,该文件使用系统生成的名称,大小为数据库中所有数据文件总大小的 25%。
FOR LOAD
支持该子句是为了与早期版本的 Microsoft SQL Server 兼容。数据库在打开dbo use only数据库选项的情况下创建,并且将其状态设置为正在装载。SQL Server 7.0 版中不需要该子句,因为 RESTORE 语句可以作为还原操作的一部分重新创建数据库。
FOR ATTACH
指定从现有的一组操作系统文件中附加数据库。必须有指定第一个主文件的 <filespec> 条目。至于其它 <filespec> 条目,只需要与第一次创建数据库或上一次附加数据库时路径不同的文件的那些条目。必须为这些文件指定 <filespec> 条目。
附加的数据库必须使用与 SQL Server 相同的代码页和排序次序创建。应使用sp_attach_db系统存储过程,而不要直接使用 CREATE DATABASE FOR ATTACH。只有必须指定 16 个以上的 <filespec> 项目时,才需要使用 CREATE DATABASE FOR ATTACH。
如果将数据库附加到的服务器不是该数据库从中分离的服务器,并且启用了分离的数据库以进行复制,则应该运行sp_removedbreplication从数据库删除复制。
collation_name
指定数据库的默认排序规则。排序规则名称既可以是 Windows 排序规则名称,也可以是 SQL 排序规则名称。如果没有指定排序规则,则将 SQL Server 实例的默认排序规则指派为数据库的排序规则。
有关 Windows 和 SQL 排序规则名称的更多信息,请参见COLLATE。
PRIMARY
指定关联的 <filespec> 列表定义主文件。主文件组包含所有数据库系统表。还包含所有未指派给用户文件组的对象。主文件组的第一个 <filespec> 条目成为主文件,该文件包含数据库的逻辑起点及其系统表。一个数据库只能有一个主文件。如果没有指定 PRIMARY,那么 CREATE DATABASE 语句中列出的第一个文件将成为主文件。
NAME
为由 <filespec> 定义的文件指定逻辑名称。如果指定了 FOR ATTACH,则不需要指定 NAME 参数。
logical_file_name
用来在创建数据库后执行的 Transact-SQL 语句中引用文件的名称。logical_file_name在数据库中必须唯一,并且符合标识符的规则。该名称可以是字符或 Unicode 常量,也可以是常规标识符或定界标识符。
FILENAME
为 <filespec> 定义的文件指定操作系统文件名。
'os_file_name'
操作系统创建 <filespec> 定义的物理文件时使用的路径名和文件名。os_file_name中的路径必须指定 SQL Server 实例上的目录。os_file_name不能指定压缩文件系统中的目录。
如果文件在原始分区上创建,则os_file_name必须只指定现有原始分区的驱动器字母。每个原始分区上只能创建一个文件。原始分区上的文件不会自动增长;因此,os_file_name指定原始分区时,不需要指定 MAXSIZE 和 FILEGROWTH 参数。
SIZE
指定 <filespec> 中定义的文件的大小。如果主文件的 <filespec> 中没有提供 SIZE 参数,那么 SQL Server 将使用model数据库中的主文件大小。如果次要文件或日志文件的 <filespec> 中没有指定 SIZE 参数,则 SQL Server 将使文件大小为 1 MB。
size
<filespec> 中定义的文件的初始大小。可以使用千字节(KB)、兆字节(MB)、千兆字节 (GB) 或兆兆字节 (TB) 后缀。默认值为 MB。指定一个整数,不要包含小数位。size的最小值为 512 KB。如果没有指定size,则默认值为 1 MB。为主文件指定的大小至少应与model数据库的主文件大小相同。
MAXSIZE
指定 <filespec> 中定义的文件可以增长到的最大大小。
max_size
<filespec> 中定义的文件可以增长到的最大大小。可以使用千字节(KB)、兆字节(MB)、千兆字节 (GB) 或兆兆字节 (TB) 后缀。默认值为 MB。指定一个整数,不要包含小数位。如果没有指定max_size,那么文件将增长到磁盘变满为止
说明在磁盘即将变满时,Microsoft Windows NT® S/B 系统日志会警告 SQL Server系统管理员。
UNLIMITED
指定 <filespec> 中定义的文件将增长到磁盘变满为止。
FILEGROWTH
指定 <filespec> 中定义的文件的增长增量。文件的 FILEGROWTH 设置不能超过 MAXSIZE 设置。
growth_increment
每次需要新的空间时为文件添加的空间大小。指定一个整数,不要包含小数位。0 值表示不增长。该值可以 MB、KB、GB、TB 或百分比 (%) 为单位指定。如果未在数量后面指定 MB、KB 或 %,则默认值为 MB。如果指定 %,则增量大小为发生增长时文件大小的指定百分比。
如果没有指定 FILEGROWTH,则默认值为 10%,最小值为 64 KB。指定的大小舍入为最接近的 64 KB 的倍数。
(8)sql语句附加数据库扩展阅读
组成
在正式学习SQL语言之前,首先让我们对SQL语言有一个基本认识,介绍一下SQL语言的组成:
1、一个SQL数据库是表(Table)的集合,它由一个或多个SQL模式定义。
2、一个SQL表由行集构成,一行是列的序列(集合),每列与行对应一个数据项。
3、一个表或者是一个基本表或者是一个视图。基本表是实际存储在数据库的表,而视图是由若干基本表或其他视图构成的表的定义。
4、一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表。每个存储文件与外部存储上一个物理文件对应。
5、用户可以用SQL语句对视图和基本表进行查询等操作。在用户角度来看,视图和基本表是一样的,没有区别,都是关系(表格)。
6、SQL用户可以是应用程序,也可以是终端用户。SQL语句可嵌入在宿主语言的程序中使用,宿主语言有FORTRAN,COBOL,PASCAL,PL/I,C和Ada语言等。SQL用户也能作为独立的用户接口,供交互环境下的终端用户使用。
参考资料来源:网络-SQL数据库
参考资料来源:网络-Create Database
‘玖’ 如何使用sql语句创建数据库
CREATE DATABASE database_name
[ CONTAINMENT = { NONE | PARTIAL } ]
[ ON
[ PRIMARY ] <filespec> [ ,...n ]
[ , <filegroup> [ ,...n ] ]
[ LOG ON <filespec> [ ,...n ] ]
]
[ COLLATE collation_name ]
[ WITH <option> [,...n ] ]
[;]
<option> ::=
{
FILESTREAM ( <filestream_option> [,...n ] )
| DEFAULT_FULLTEXT_LANGUAGE = { lcid | language_name | language_alias }
| DEFAULT_LANGUAGE = { lcid | language_name | language_alias }
| NESTED_TRIGGERS = { OFF | ON }
| TRANSFORM_NOISE_WORDS = { OFF | ON}
| TWO_DIGIT_YEAR_CUTOFF = <two_digit_year_cutoff>
| DB_CHAINING { OFF | ON }
| TRUSTWORTHY { OFF | ON }
}
<filestream_option> ::=
{
NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL }
| DIRECTORY_NAME = 'directory_name'
}
To attach a database
CREATE DATABASE database_name
ON <filespec> [ ,...n ]
FOR { { ATTACH [ WITH <attach_database_option> [ , ...n ] ] }
| ATTACH_REBUILD_LOG }
[;]
<filespec> ::=
{
(
NAME = logical_file_name ,
FILENAME = { 'os_file_name' | 'filestream_path' }
[ , SIZE = size [ KB | MB | GB | TB ] ]
[ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ]
[ , FILEGROWTH = growth_increment [ KB | MB | GB | TB | % ] ]
)
}
<filegroup> ::=
{
FILEGROUP filegroup_name [ CONTAINS FILESTREAM ] [ DEFAULT ]
<filespec> [ ,...n ]
}
<attach_database_option> ::=
{
<service_broker_option>
| RESTRICTED_USER
| FILESTREAM ( DIRECTORY_NAME = { 'directory_name' | NULL } )
}
<service_broker_option> ::=
{
ENABLE_BROKER
| NEW_BROKER
| ERROR_BROKER_CONVERSATIONS
}
Create a database snapshot
CREATE DATABASE database_snapshot_name
ON
(
NAME = logical_file_name,
FILENAME = 'os_file_name'
) [ ,...n ]
AS SNAPSHOT OF source_database_name
[;]
database_name
新数据库的名称。
数据库名称在 SQL Server 的实例中必须唯一,并且必须符合 标识符规则。
除非没有为日志文件指定逻辑名称,否则 database_name 最多可以包含 128 个字符。
如果未指定逻辑日志文件名称,则 SQL Server 将通过向 database_name 追加后缀来为日志生成 logical_file_name 和 os_file_name。
这会将 database_name 限制为 123
个字符,从而使生成的逻辑文件名称不超过 128 个字符。
如果未指定数据文件的名称,则 SQL Server 使用 database_name 作为 logical_file_name 和 os_file_name。
默认路径从注册表中获得。
可以使用 Management Studio 中的“服务器属性”(“数据库设置”页)更改默认路径。
更改默认路径要求重新启动 SQL Server。
CONTAINMENT
指定数据库的包含状态。
NONE = 非包含数据库。
PARTIAL = 部分包含的数据库。
ON
指定显式定义用来存储数据库数据部分的磁盘文件(数据文件)。
当后面是以逗号分隔的、用以定义主文件组的数据文件的 <filespec> 项列表时,需要使用
ON。
主文件组的文件列表可后跟以逗号分隔的、用以定义用户文件组及其文件的 <filegroup>
项列表(可选)。
PRIMARY
指定关联的 <filespec> 列表定义主文件。
在主文件组的 <filespec> 项中指定的第一个文件将成为主文件。
一个数据库只能有一个主文件。
有关详细信息,请参阅 数据库文件和文件组。
如果没有指定 PRIMARY,那么 CREATE DATABASE
语句中列出的第一个文件将成为主文件。
LOG ON
指定显式定义用来存储数据库日志的磁盘文件(日志文件)。
LOG ON 后跟以逗号分隔的用以定义日志文件的 <filespec> 项列表。
如果没有指定 LOG ON,将自动创建一个日志文件,其大小为该数据库的所有数据文件大小总和的 25% 或 512
KB,取两者之中的较大者。
此文件放置于默认的日志文件位置。
有关此位置的信息,请参阅 查看或更改数据文件和日志文件的默认位置 (SQL Server Management Studio)。
不能对数据库快照指定 LOG ON。
COLLATE collation_name
指定数据库的默认排序规则。
排序规则名称既可以是 Windows 排序规则名称,也可以是 SQL 排序规则名称。
如果没有指定排序规则,则将 SQL Server 实例的默认排序规则分配为数据库的排序规则。
不能对数据库快照指定排序规则名称。
不能使用 FOR ATTACH 或 FOR ATTACH_REBUILD_LOG
子句指定排序规则名称。
有关如何更改附加数据库的排序规则的信息,请访问此 Microsoft 网站。
有关 Windows 和 SQL 排序规则名称的详细信息,请参阅 COLLATE (Transact-SQL)。
注意
包含数据库的排序方式不同于非包含数据库。
有关详细信息,请参阅 包含数据库的排序规则。
WITH <选项>
仅在将 CONTAINMENT 设置为 PARTIAL 之后,才允许使用以下选项。
如果将 CONTAINMENT 设置为 NONE,将发生错误。
<filestream_options>
NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL }
指定对数据库的非事务性 FILESTREAM 访问的级别。
USE master;
GO
CREATE DATABASE mytest;
GO
-- Verify the database files and sizes
SELECT name, size, size*1.0/128 AS [Size in MBs]
FROM sys.master_files
WHERE name = N'mytest';
GO
USE master;
GO
CREATE DATABASE mytest;
GO
-- Verify the database files and sizes
SELECT name, size, size*1.0/128 AS [Size in MBs]
FROM sys.master_files
WHERE name = N'mytest';
GO
B.创建指定数据和事务日志文件的数据库
下面的示例将创建数据库 Sales。
因为没有使用关键字 PRIMARY,第一个文件 ( Sales_
dat) 将成为主文件。
因为在 Sales_ dat 文件的 SIZE 参数中没有指定 MB 或 KB,将使用 MB 并按 MB 分配。
Sales_ log 文件以 MB 为单位进行分配,因为 SIZE 参数中显式声明了
MB 后缀。
USE master;
GO
CREATE DATABASE Sales
ON
( NAME = Sales_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\saledat.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = Sales_log,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\salelog.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB ) ;
GO
USE master;
GO
CREATE DATABASE Sales
ON
( NAME = Sales_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\saledat.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = Sales_log,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\salelog.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB ) ;
GO
C.通过指定多个数据和事务日志文件创建数据库
以下示例创建数据库 Archive,该数据库具有三个 100-MB 数据文件和两个 100-MB 事务日志文件。
主文件是列表中的第一个文件,并使用 PRIMARY
关键字显式指定。
事务日志文件在 LOG ON 关键字后指定。
请注意用于 FILENAME 选项中各文件的扩展名: .mdf 用于主数据文件, .ndf 用于辅助数据文件, .ldf 用于事务日志文件。
此示例将数据库放置于 D: 驱动器上,而非 master 数据库中。
USE master;
GO
CREATE DATABASE Archive
ON
PRIMARY
(NAME = Arch1,
FILENAME = 'D:\SalesData\archdat1.mdf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
( NAME = Arch2,
FILENAME = 'D:\SalesData\archdat2.ndf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
( NAME = Arch3,
FILENAME = 'D:\SalesData\archdat3.ndf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20)
LOG ON
(NAME = Archlog1,
FILENAME = 'D:\SalesData\archlog1.ldf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
(NAME = Archlog2,
FILENAME = 'D:\SalesData\archlog2.ldf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20) ;
GO
USE master;
GO
CREATE DATABASE Archive
ON
PRIMARY
(NAME = Arch1,
FILENAME = 'D:\SalesData\archdat1.mdf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
( NAME = Arch2,
FILENAME = 'D:\SalesData\archdat2.ndf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
( NAME = Arch3,
FILENAME = 'D:\SalesData\archdat3.ndf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20)
LOG ON
(NAME = Archlog1,
FILENAME = 'D:\SalesData\archlog1.ldf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
(NAME = Archlog2,
FILENAME = 'D:\SalesData\archlog2.ldf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20) ;
GO