新聞中心
sqlserver 的圖片怎么讀取? 怎么存儲(chǔ) 用asp.net 上傳的
直接存,直接讀.要注意格式,就是類(lèi)型,數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí),圖片字段類(lèi)型是IMAGE程序中取時(shí)轉(zhuǎn)成IMAGE接收!
創(chuàng)新互聯(lián)公司主要從事做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)黃陂,10年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢(xún)建站服務(wù):18982081108
sqlserver with snapshot 有什么作用
數(shù)據(jù)庫(kù)快照為你現(xiàn)有的數(shù)據(jù)庫(kù)創(chuàng)建了一個(gè)數(shù)據(jù)庫(kù)的殼,然后無(wú)論何時(shí)當(dāng)數(shù)據(jù)頁(yè)被修改的時(shí)候,改變也同時(shí)被寫(xiě)入稀疏文件(sparse file)當(dāng)中。當(dāng)人們獲取數(shù)據(jù)的時(shí)候,數(shù)據(jù)中沒(méi)有變化的部分是從原始數(shù)據(jù)庫(kù)中得到的,而改變的部分則是從稀疏文件中獲得。
稀疏文件和數(shù)據(jù)庫(kù)快照
當(dāng)數(shù)據(jù)庫(kù)快照被創(chuàng)建的時(shí)候,第一次的創(chuàng)建是十分迅速的。因?yàn)閷?shí)際上只是創(chuàng)建了一個(gè)用來(lái)記錄被修改文件的殼。隨著時(shí)間的推移,文件不斷的被修改,這些修改頁(yè)都將被寫(xiě)進(jìn)稀疏文件。你的主數(shù)據(jù)庫(kù)中修改的文件越多,就有越多的文件被寫(xiě)入稀疏文件。因此,有越來(lái)越多的磁盤(pán)空間被用來(lái)保存你的主數(shù)據(jù)庫(kù)和快照的數(shù)據(jù)庫(kù),也增加了你服務(wù)器的磁盤(pán)輸入輸出的次數(shù)。
稀疏文件被寫(xiě)入大小為64KB的分組塊當(dāng)中。每一個(gè)分組塊增量能包含8個(gè)大小為8KB的數(shù)據(jù)頁(yè)。所以,每次在你的主數(shù)據(jù)庫(kù)中有任何的數(shù)據(jù)改變,都會(huì)先把數(shù)據(jù)頁(yè)拷貝到稀疏文件當(dāng)中,然后再將主數(shù)據(jù)庫(kù)中文件的變化寫(xiě)入稀疏文件。一旦數(shù)據(jù)頁(yè)被寫(xiě)入稀疏文件,他們就不再需要被寫(xiě)出來(lái)。因?yàn)轫?yè)面的全部?jī)?nèi)容被保護(hù)起來(lái),讓其處于當(dāng)快照建立時(shí)的狀態(tài)。
為了實(shí)現(xiàn)優(yōu)化磁盤(pán)并消除磁盤(pán)沖突,在主數(shù)據(jù)庫(kù)以外的獨(dú)立的驅(qū)動(dòng)器和陣列中創(chuàng)建稀疏文件是一個(gè)明知之舉。原因有二:
其一,當(dāng)快照被建立的時(shí)候,沒(méi)有數(shù)據(jù)被寫(xiě)入稀疏文件。從快照進(jìn)行的所有的數(shù)據(jù)訪(fǎng)問(wèn)實(shí)際上都是在主數(shù)據(jù)庫(kù)文件當(dāng)中的。隨著時(shí)間的推移,你會(huì)通過(guò)在不同的陣列和磁盤(pán)上從主文件數(shù)據(jù)庫(kù)讀取未被修改過(guò)的文件和從稀疏文件讀取修改過(guò)的數(shù)據(jù)的方法來(lái)減少輸入輸出的負(fù)擔(dān)。
其二,根據(jù)你數(shù)據(jù)庫(kù)數(shù)據(jù)的易變動(dòng)性和數(shù)據(jù)變化的數(shù)量,你可以通過(guò)將在主數(shù)據(jù)庫(kù)的讀取工作和稀疏文件的寫(xiě)入工作分離來(lái)減少輸入輸出的瓶頸大小。
使用數(shù)據(jù)庫(kù)快照
在這里你一定要記住的事情就是,你的查詢(xún)請(qǐng)求訪(fǎng)問(wèn)的依然是你的主數(shù)據(jù)庫(kù)。當(dāng)初始的快照被建立的時(shí)候,其實(shí)僅建立了一個(gè)空的殼子。所有的數(shù)據(jù)請(qǐng)求都是在主數(shù)據(jù)庫(kù)文件中被完成的。隨著時(shí)間的流逝和文件不斷地被修改,就有一些數(shù)據(jù)請(qǐng)求從初始的數(shù)據(jù)庫(kù)文件中分離出來(lái)指向了稀疏文件。所以,盡管看上去它是一個(gè)獨(dú)立的數(shù)據(jù)庫(kù),那些根本的數(shù)據(jù)仍然是源于主數(shù)據(jù)庫(kù)。
鑒于此,你需要確定不要試圖去進(jìn)行你日常活動(dòng)范圍以外的查詢(xún)。這樣說(shuō)吧,你創(chuàng)建了一個(gè)快照,接著你進(jìn)行了讀寫(xiě)的操作,并對(duì)每個(gè)人做了記錄。當(dāng)那些記錄被執(zhí)行查詢(xún)操作時(shí),他們?nèi)匀焕^續(xù)影響著主數(shù)據(jù)庫(kù)。所以你要保證任何新的活動(dòng)都不會(huì)影響主數(shù)據(jù)的活動(dòng)。
另外,你需要記住到底有哪些數(shù)據(jù)是被寫(xiě)入稀疏文件里的,而不是認(rèn)為所有可能的數(shù)據(jù)都被寫(xiě)進(jìn)了稀疏文件?;旧?,當(dāng)快照被創(chuàng)立時(shí),主數(shù)據(jù)庫(kù)的大小就是快照稀疏文件的潛在大小。如果稀疏文件中的數(shù)據(jù)量已經(jīng)達(dá)到甚至超過(guò)數(shù)據(jù)庫(kù)的一半時(shí),也許再創(chuàng)造一個(gè)數(shù)據(jù)庫(kù)的完整拷貝來(lái)取代現(xiàn)有的快照是一個(gè)更好的主意。
綜上所述,我認(rèn)為,數(shù)據(jù)庫(kù)快照是一個(gè)非常新的功能。我也希望在SQL Server2005的所有版本,而不僅僅在企業(yè)版和開(kāi)發(fā)版中可以應(yīng)用這個(gè)功能。有一個(gè)沒(méi)有討論的地方就是我們沒(méi)有討論有關(guān)對(duì)數(shù)據(jù)庫(kù)鏡像使用快照。其實(shí),無(wú)論是鏡像還是原數(shù)據(jù)庫(kù),快照都給了你最好的方法。因?yàn)殓R像是離線(xiàn)的,你并不能訪(fǎng)問(wèn)那些數(shù)據(jù),所以說(shuō)無(wú)論是鏡像還是原數(shù)據(jù)庫(kù),它都給了你最好的方法?;ㄒ恍r(shí)間去理解快照是如何應(yīng)用于你的環(huán)境中的,并且確認(rèn)你監(jiān)視著維護(hù)快照的影響以及通過(guò)快照進(jìn)行的數(shù)據(jù)存儲(chǔ)。
sqlserver數(shù)據(jù)庫(kù)實(shí)時(shí)同步是選快照發(fā)布還是事務(wù)發(fā)布
1. SQLSERVER服務(wù)器上面安裝oracle客戶(hù)端,配置服務(wù)命名(假設(shè)為 test)
2. 在SQLSERVER服務(wù)器上面建立鏈接服務(wù)器,腳本如下
SQL code?
SQL code-- Adding linked server:
exec sp_addlinkedserver @server = 'test' ,
@srvproduct = 'ORACLE',
@provider = 'MSDAORA',
@datasrc = 'test'
-- Adding linked server login:
exec sp_addlinkedsrvlogin @useself='false ', @rmtsrvname = 'test',
@rmtuser = 'user', --數(shù)據(jù)庫(kù)用戶(hù)
@rmtpassword = 'password' --密碼
3. 建立一個(gè)作業(yè),通過(guò)作業(yè)調(diào)度存儲(chǔ)過(guò)程,存儲(chǔ)過(guò)程使用類(lèi)似的語(yǔ)句將oracle的數(shù)據(jù)插入到sqlserver表中
SQL code?
insert into sqlserver表 select * from test..oracle表名
4. 如果要球ORACLE數(shù)據(jù)是實(shí)時(shí)增加的,并且ORACLE記錄上有遞增的字段,可以在SQLSERVER上面建立一個(gè)表記錄上次插入的id,然后下次可以從上次的ID+1開(kāi)始繼續(xù)插入
SQL code?
insert into sqlserver表 select * from test..oracle表名 where id@id
5. 防止sqlserver同步的時(shí)候oracle仍在不斷的插入,每次要取一個(gè)結(jié)束ID
SQL code?
select @endid=max(id) from test..oracle表名.
sqlserver快照復(fù)制報(bào)錯(cuò),錯(cuò)誤號(hào):mssql_repl20052
1、查詢(xún)SQL中的所有表: Select TABLE_NAME FROM 數(shù)據(jù)庫(kù)名稱(chēng).INFORMATION_SCHEMA.TABLES Where TABLE_TYPE='BASE TABLE' 執(zhí)行之后,就可以看到數(shù)據(jù)庫(kù)中所有屬于自己建的表的名稱(chēng) 2、查詢(xún)SQL中所有表及列: Select dbo.sysobjects.name as Table_name, dbo.syscolumns.name AS Column_name FROM dbo.syscolumns INNER JOIN dbo.sysobjects ON dbo.syscolumns.id = dbo.sysobjects.id Where (dbo.sysobjects.xtype = 'u') AND (NOT (dbo.sysobjects.name LIKE 'dtproperties')) 3、在Sql查詢(xún)分析器,還有一個(gè)簡(jiǎn)單的查詢(xún)方法: EXEC sp_MSforeachtable @command1="sp_spaceused '?'" 執(zhí)行完之后,就可以看到數(shù)據(jù)庫(kù)中所有用戶(hù)表的信息 4、查詢(xún)總存儲(chǔ)過(guò)程數(shù):select count(*) 總存儲(chǔ)過(guò)程數(shù) from sysobjects where xtype='p' 附:xtype類(lèi)型D = 默認(rèn)值或 DEFAULT 約束
F = FOREIGN KEY 約束L = 日志FN = 標(biāo)量函數(shù)
IF = 內(nèi)嵌表函數(shù)
P = 存儲(chǔ)過(guò)程
PK = PRIMARY KEY 約束(類(lèi)型是 K)
RF = 復(fù)制篩選存儲(chǔ)過(guò)程S = 系統(tǒng)表TF = 表函數(shù)
TR = 觸發(fā)器U = 用戶(hù)表UQ = UNIQUE 約束(類(lèi)型是 K)V = 視圖X = 擴(kuò)展存儲(chǔ)過(guò)程 另:在sqlserver中取得某個(gè)數(shù)據(jù)庫(kù)中所有表名的sql語(yǔ)句 select sysobjects.name from sysobjects.xtype ='U';SELECT name
WHERE (xtype = 'U') 在數(shù)據(jù)庫(kù)的sysobjects表里有這個(gè)數(shù)據(jù)庫(kù)全部表的信息, xtype值為'U'的就是表名 注意:一般通過(guò)上述方法獲得全部用戶(hù)表示都會(huì)有一個(gè)dtproperties表,SQLSERVER 默認(rèn)它也是用戶(hù)表,想要從用戶(hù)表中排出,需要加上限定條件 status0,即:select * from sysobjects where xtype='U' and status0
如何利用SQL Server數(shù)據(jù)庫(kù)快照形成報(bào)表
在SQL Server 2005中,它的另外一個(gè)強(qiáng)大的新特點(diǎn)是數(shù)據(jù)庫(kù)快照。數(shù)據(jù)庫(kù)快照是一個(gè)數(shù)據(jù)庫(kù)的只讀副本,它是數(shù)據(jù)庫(kù)所有數(shù)據(jù)的映射,由快照被執(zhí)行的時(shí)間點(diǎn)來(lái)決定它的內(nèi)容。
這些數(shù)據(jù)庫(kù)快照在報(bào)表方面是非常有價(jià)值,因?yàn)樵诳煺諗?shù)據(jù)庫(kù)中或者在原數(shù)據(jù)庫(kù)中,對(duì)于任何查詢(xún)而言沒(méi)有鎖就將被執(zhí)行??煺找部梢允褂迷跒?zāi)難恢復(fù)中,因?yàn)槟憧梢詫F(xiàn)有的數(shù)據(jù)恢復(fù)到現(xiàn)有的快照中,或者還可以在有害數(shù)據(jù)操作聲明的事件中存儲(chǔ)個(gè)別必要的表和數(shù)據(jù)。
數(shù)據(jù)庫(kù)快照是如何工作的?
可以使用典型的數(shù)據(jù)庫(kù)命令CREATE DATABASE語(yǔ)句來(lái)生成一個(gè)數(shù)據(jù)庫(kù)快照,在聲明中有一個(gè)源數(shù)據(jù)庫(kù)快照的附加說(shuō)明。當(dāng)快照被建立時(shí),同時(shí)生成一個(gè)稀疏文件。這個(gè)文件(只能使用在NTFS卷中)在初始化的時(shí)候并沒(méi)有磁盤(pán)空間分配給它——盡管你可能在WINDOWS資源管理器中看到了文件的大小,它會(huì)看上去與原始的源數(shù)據(jù)庫(kù)文件的大小相同。對(duì)磁盤(pán)來(lái)說(shuō)其實(shí)這個(gè)文件的大小接近于零。
數(shù)據(jù)庫(kù)快照在初始化時(shí)讀的數(shù)據(jù)文件是來(lái)自于源數(shù)據(jù)庫(kù)的。當(dāng)源數(shù)據(jù)庫(kù)的數(shù)據(jù)發(fā)生變化時(shí),數(shù)據(jù)引擎就會(huì)將原始數(shù)據(jù)從源數(shù)據(jù)庫(kù)拷貝到快照數(shù)據(jù)庫(kù)中。這個(gè)技術(shù)確??煺諗?shù)據(jù)庫(kù)只反映快照被執(zhí)行時(shí)數(shù)據(jù)的狀態(tài)。當(dāng)SELECT命令被用來(lái)發(fā)布反對(duì)數(shù)據(jù)庫(kù)快照時(shí),不管數(shù)據(jù)頁(yè)的讀取是否被定位在源數(shù)據(jù)庫(kù)數(shù)據(jù)文件中還是在快照數(shù)據(jù)庫(kù)數(shù)據(jù)文件中都是沒(méi)有鎖被發(fā)布的。因?yàn)樵谥蛔x數(shù)據(jù)庫(kù)快照中是沒(méi)有鎖被發(fā)布,數(shù)據(jù)庫(kù)快照對(duì)于報(bào)表解決方案是一個(gè)重要的解決方案。
一個(gè)快照的實(shí)例
現(xiàn)在,讓我們來(lái)看看數(shù)據(jù)庫(kù)快照在SQL Server 2005中是如何工作的。為此,首先我需要一個(gè)源數(shù)據(jù)庫(kù)作為快照的來(lái)源。下面的腳本將創(chuàng)建一個(gè)源數(shù)據(jù)庫(kù):
以下為引用的內(nèi)容:
USE master
GO
IF EXISTS(SELECT name from sysdatabases where [name] = 'SourceDatabase')
DROP DATABASE SourceDatabase
GO
CREATE DATABASE SourceDatabaseON PRIMARY
(
NAME = SourceDatabase_Data,
FILENAME = 'C:SQLServerSourceDatabase_Data.mdf'
) LOG ON
(
NAME = SourceDatabase_Log,
FILENAME = 'C:SQLServerSourceDatabase_Log.ldf'
)
GO
注意這里產(chǎn)品區(qū)域的大小。我定義它的大小為CHAR(150)來(lái)強(qiáng)調(diào)數(shù)據(jù)文件的增長(zhǎng)級(jí)數(shù),這樣在我接下來(lái)的實(shí)例中將更容易解釋清楚快照是如何工作的。
現(xiàn)在既然我已經(jīng)有了一個(gè)源數(shù)據(jù)庫(kù),現(xiàn)在我裝載一些數(shù)據(jù)來(lái)擴(kuò)展數(shù)據(jù)文件的大小位。如此,使用列表1中的腳本來(lái)創(chuàng)建銷(xiāo)售歷史表。
以下為引用的內(nèi)容:
USE SourceDatabase
GO
IF OBJECT_ID('SalesHistory')0 DROP TABLE SalesHistory
GO
CREATE TABLE SalesHistory
( SaleID INT IDENTITY(1,1),
Product CHAR(150), SaleDate DATETIME,
SalePrice MONEY
)
DECLARE @i INT
SET @i = 1
WHILE (@i =10000)
BEGIN INSERT INTO SalesHistory (Product, SaleDate, SalePrice)
VALUES ('Computer', DATEADD(mm, @i, '3/11/1919'),
DATEPART(ms, GETDATE()) + (@i + 57) )
INSERT INTO SalesHistory (Product, SaleDate, SalePrice)
VALUES ('BigScreen', DATEADD(mm, @i, '3/11/1927'),
DATEPART(ms, GETDATE()) + (@i + 13) )
INSERT INTO SalesHistory (Product, SaleDate, SalePrice)
VALUES ('PoolTable', DATEADD(mm, @i, '3/11/1908'),
DATEPART(ms, GETDATE()) + (@i + 29) )
SET @i = @i + 1
END
GO
SQLServer快照功能以及其查詢(xún)?nèi)绾尾僮?/h2>
SQLServer數(shù)據(jù)庫(kù)的快照只能通過(guò)SQL語(yǔ)句創(chuàng)建,以msdb數(shù)據(jù)庫(kù)為例進(jìn)行說(shuō)明:
1、執(zhí)行以下代碼,看看MSDB數(shù)據(jù)庫(kù)有多少數(shù)據(jù)文件
EXEC SP_HELPDB msdb
2、為每一個(gè)數(shù)據(jù)文件創(chuàng)建快照,代碼如下:
create database snap_MSDBData_1811221202
ON ( NAME = MSDBData, FILENAME= 'D:\userdata\temp\Snap_MSDBData.snap')
AS SNAPSHOT OF MSDB
3、在“數(shù)據(jù)庫(kù)快照”那里就可以看到剛剛創(chuàng)建snap_MSDBData_1811221202這個(gè)快照了,對(duì)比一下快照和原庫(kù),內(nèi)容是一樣的
4、數(shù)據(jù)庫(kù)快照其實(shí)也是一個(gè)數(shù)據(jù)庫(kù),可以在上面執(zhí)行任何SQL語(yǔ)句,我們執(zhí)行一個(gè)查詢(xún)語(yǔ)句看看效果
SELECT *? FROM [MSDB].[dbo].[MSdbms]
SELECT *? FROM [snap_MSDBData_1811221202].[dbo].[MSdbms]
查詢(xún)結(jié)果是完全一樣的。
(如有幫助,請(qǐng)采納,謝謝)
分享標(biāo)題:sqlserver讀快照,sql server 快照
網(wǎng)頁(yè)鏈接:http://fisionsoft.com.cn/article/dsigeii.html