tsql安裝
1. 求救我的VC++怎麼安裝不了!!!!
因為VC需要系統的支持,最好你應該把它按照默認的安裝地方存放,如果還是不行的話,那就是你系統的某個文件在你用一些垃圾清理工具的時候被當做垃圾處理了,你到具有相同系統的且能正常安裝使用的同學那裡復制一下系統文件或者自己重裝系統!
2. Visual Studio 2013 網頁安裝卡住
我今天也遇到了同樣的問題,官方的說法是可能是因為需要檢查系統最新的更新是不是都安裝了的關系...可是我已經等了1個小時了...
更新,現在裝好了,根據安裝日誌,就這一項大概裝了1小時15分鍾,這一個KB包含了59項更新
包含以下內容:
WinBlue_AppCertKitx64Patch,WinBlue_SDKStoreDXRem,WinBlue_SDKDXRem,WinBlue_SDKStore,WinBlue_SDK,PythonToolsTemplate_DevEnv,AppInsights,VS核心更新,TypeScript,TypeScript_SDK,CoreCon,WindowsPhone81SDK,WindowsPhone81SDK,PhoneAddon_SharedCore,PhoneAddon_SharedCoreRes,PhoneAddon_ProfessionalCore,PhoneAddon_ProfessionalCoreRes,MemoryProfiler_CORE,MemoryProfilerRes,BehaviorsXamlPhoneSDK,MobileTools_AddInCore,VC編譯器核心D11,VC庫核心D11,VC運行時調試D11,VS2012UnitTestsdk,MobileTools_AddInCoreres,VS2012UnitTestsdk_res,vc_compilerCoreResD11,,WP81XamlAdSDK,Preparation_InstallAdvertised,Preparation,EmulatorWP81BundleExeCache,sqldom_Sql2014,TSqlLanguageService_Sql2014,SSDTDBSvcExternals_Sql2014,sqllocaldb_Sql2014,sqlsysclrtypes_Sql2014,sharedmanagementobjects_Sql2014
項目眾多,我就不一一翻譯了,相信作為開發者的你基本上也看得懂
3. Microsoft VBScript 編譯器錯誤 '800a03ee' 缺少對象'addname'
一、(壞的比較嚴重,連http://localhost都無法打開頁面)
訪問IIS客戶端出現錯信息提示:
The server has encountered an error while loading an application ring the processing of your request. Please refer to the event log for more detail information. Please contact the server administrator for assistance.
1、右鍵我的電腦--管理--本地用戶和組,給IUSR_機器名和IWAM_機器名兩個用戶設置密碼,要一樣。
2、開始--運行--打cmd,
然後cd c:\Inetpub\Adminscripts
然後cscript.exe adsutil.vbs set w3svc/wamuserpass 你的密碼,
然後cscript.exe adsutil.vbs set w3svc/anonymoususerpass 你的密碼
看一下,行了沒有?如果還不行,那麼
cscript.exe synciwam.vbs -v,
然後重新啟動IIS
如果還是提示8004E00F錯誤,此錯誤是MSDTC服務不正常造成的,解決方法:
首先進入組件服務,查看組件服務/計算機/我的電腦/COM+應用程序,結果報錯「COM+ 無法與 Microsoft 分布式事務協調程序交談」,無法查看裡面的對象。
3、進入事件查看器,發現MSDTC服務沒有正常啟動。
4、刪除注冊表中的鍵:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSDTC
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC
HKEY_CLASSES_ROOT\CID
5、停止MSDTC服務:net stop msdtc
6、卸載MSDTC服務:msdtc -uninstall
7、重新安裝MSDTC服務:msdtc -install
8、確認在事件查看器中MSDTC服務已經正常啟動[這步很關鍵,如果沒有,重新啟動下電腦看看]
9、重新設置IIS的IWAM賬號密碼。[在計算機管理中的用戶管理里]
10、同步IIS metabase中IWAM_MYSERVER的密碼,在CMD中:cd c:\inetput\adminscripts>adsutil set w3svc/wamuserpass "yourpassword"
11、同步COM+應用程序所用的IWAM_MYSERVER密碼,在CMD中:cd c:\inetput\adminscripts>cscript synciwam.vbs -v
到這部分應該可以了,但是我這里雖然沒有8004e00f的錯誤提示了,但是訪問頁面Server Application Error 錯誤依舊,最後終於找到了解決方法如下:
解決辦法:
12:
檢查你的DTC服務(全名:Distributed Transaction Coordinator)是否可以正常啟動,
如果正常的話請你跳過此步驟;如果出錯,無法正常啟動,請在開始菜單的運行中 運行:msdtc -resetlog 以創建日誌文件。重起機器,檢查IIS是否可以正常使用,若不行繼續。
13:
在CMD下執行以下命令:
cd %windir%\system32\inetsrv
rundll32 wamreg.dll, CreateIISPackage
regsvr32 asptxn.dll
(到這里我就可以用了,不用重啟的)
OK,ASP頁面一切正常了@!~~~^_^
二、(壞的比較輕微)正常的時候應該是:
http://localhost http://你的計算機名 http://127.0.0.1
這3種方式都能打開IIS默認文檔,如果http://127.0.0.1不行:
1、查看網站屬性——文檔
看看啟用默認文檔中是否存在:index.asp index.htm index.html (最好全都有,沒有可添加)
2、查看網站屬性——主目錄
A、本地路徑是否指定正確
B、是否勾選「腳本資源訪問」?
C、是否勾選「讀取」?
D、執行許可權:純腳本
3、查看網站屬性——目錄安全性——編輯
A、是否勾選「匿名訪問」?
B、用戶名:IUSR_您的計算機名(不對,就點瀏覽選擇)
C、密碼不用改,勾選「允許IIS控制密碼」就可以了
D、其它不用選
4、查看網站屬性——網站
A、IP地址:全部未分配 或者 選擇一個
B、TCP埠:80 (最好不要改,改了訪問方法就不一)
5、打開控制面板——管理工具——計算機管理——本地用戶和組——用戶
A、看看「IUSR_您的計算機名」此用戶有沒有啟動,必須啟動(說明:有紅色的×表示沒有啟動)
B、看看「IWAM_您的計算機名」此用戶有沒有啟動,必須啟動(說明:有紅色的×表示沒有啟動)
C、在「IWAM_您的計算機名」該用戶上按右鍵——設置密碼(密碼要記住,後面還需要用上該密碼)
6、打開控制面板——管理工具——組件服務——組件服務——計算機——我的電腦——COM+應用程序
A、在「IIS Out-Of-Process Pooled Applications」上按右鍵選擇『屬性』——選擇『標識』,指定用戶:IWAM_您計算機名(說明:可以點瀏覽查找);輸入密碼,密碼上面步驟的密碼。再次啟動該服務,啟動後它會動。
B、在「IIS In-Process Applications」上按右鍵選擇『屬性』——選擇『安全性』,將『啟用身份驗證』勾去掉
C、在「IIS Utilities」上按右鍵選擇『屬性』——選擇『安全性』,將『啟用身份驗證』勾去掉。
最後,就是測試了.
三、(資料庫不能正常連接的錯誤)暫時解決方案
錯誤類型:
Microsoft JET Database Engine (0x80004005)未指定的錯誤解決
1、系統可能沒有注冊msjetoledb40.dll,解決辦法是
點 開始--->運行, 輸入 regsvr32 msjetoledb40.dll, 回車即可
2、資料庫所在文件夾許可權(NTFS文件系統)
打開辦法是:打開我的電腦,然後點菜單上的「文件夾選項」--->查看,然後把「使用簡單文件夾共享(推薦)」前面的鉤去掉,然後點「確認」;接下來回到需要打開許可權的文件夾(資料庫存放的文件夾),右鍵---> 屬性--->安全,然後點「添加」--->"高級"--->立即查找--->然後在下面的地方選擇「everyone」--->確定--->點剛才加入的"everyone",然後在下面的大框編輯everyone許可權為完全控制,保存即可。
3、需要打開guest用戶
打開方法:我的電腦--->控制面板--->管理工具---->計算機管理--->本地用戶和組---用戶---找到"guest",雙擊,然後把彈出來的狂上的「帳戶已停用」前的鉤去掉,保存即可。
4、temp(臨時文件夾)許可權
打開辦法:windows--->temp,單擊右鍵選擇-屬性,你就會看到一個叫做「安全」的選項,添加一個everyone,許可權設置為完全控制,再將你正在使用windows的用戶也設置為完全控制.(件夾許可權
打開辦法是:打開我的電腦,然後點菜單上的「文件夾選項」--->查看,然後把「使用簡單文件夾共享(推薦)」前面的鉤去掉,然後點「確認」;接下來回到需要打開許可權的文件夾(資料庫存放的文件夾),右鍵---> 屬性--->安全,然後點「添加」--->"高級"--->立即查找--->然後在下面的地方選擇「everyone」--->確定--->點剛才加入的"everyone",然後在下面的大框編輯everyone許可權為完全控制,保存即可。
另外的偷懶解決方案(換台機器又不行了):
把IIS里的「匿名訪問和身份驗證控制」換成管理員就行了
使用NTFS重大的問題就是IIS里ASP訪問資料庫都會出錯:
Microsoft JET Database Engine 錯誤 '80004005'
未指定的錯誤
/NetDisk/conn.asp
給用戶(IUSR_你的計算機名)有資料庫文件和資料庫所在目錄寫的許可權,按照這樣做了,錯誤依舊出現,後來就只有把IIS的來賓訪問用戶設置成管理員,暫時這樣用了……
現在又想追究一下到底是什麼原因,想找出徹底解決辦法。又上網搜索了一下,發現還有一個目錄要給用戶(IUSR_你的計算機名)有寫的許可權的,就是%SystemRoot%\Temp(即默認安裝系統情況下的C:\Windows\Temp)目錄,ASP.NET的許可權問題也是要給這個臨時目錄許可權,現在ASP的也是。問題得以解決!!
4. sql中的 raiserror什麼意思啊
RAISERROR
返回用戶定義的錯誤信息並設系統標志,記錄發生錯誤。通過使用 RAISERROR 語句,客戶端可以從 sysmessages 表中檢索條目,或者使用用戶指定的嚴重度和狀態信息動態地生成一條消息。這條消息在定義後就作為伺服器錯誤信息返回給客戶端。
語法
RAISERROR ( { msg_id | msg_str } { , severity , state }
[ , argument [ ,...n ] ] )
[ WITH option [ ,...n ] ]
參數
msg_id
存儲於 sysmessages 表中的用戶定義的錯誤信息。用戶定義錯誤信息的錯誤號應大於 50,000。由特殊消息產生的錯誤是第 50,000 號。
msg_str
是一條特殊消息,其格式與 C 語言中使用的 PRINTF 格式樣式相似。此錯誤信息最多可包含 400 個字元。如果該信息包含的字元超過 400 個,則只能顯示前 397 個並將添加一個省略號以表示該信息已被截斷。所有特定消息的標准消息 ID 是 14,000。
msg_str 支持下面的格式:
% [[flag] [width] [precision] [{h | l}]] type
可在 msg_str 中使用的參數包括:
flag
用於確定用戶定義的錯誤信息的間距和對齊的代碼。
可以查閱一下SQL SERVER的聯機叢書(在安裝了MSSQL的開始菜單里可以查到)
5. 如何備份和還原SQL存儲過程
利用T-SQL語句,實現資料庫的備份與還原的功能
體現了SQL Server中的四個知識點:
1. 獲取SQL Server伺服器上的默認目錄
2. 備份SQL語句的使用
3. 恢復SQL語句的使用,同時考慮了強制恢復時關閉其他用戶進程的處理
4. 作業創建SQL語句的使用
/*1.--得到資料庫的文件目錄
@dbname 指定要取得目錄的資料庫名
如果指定的數據不存在,返回安裝SQL時設置的默認數據目錄
如果指定NULL,則返回默認的SQL備份目錄名
*/
/*--調用示例
select 資料庫文件目錄=dbo.f_getdbpath('tempdb')
,[默認SQL SERVER數據目錄]=dbo.f_getdbpath('')
,[默認SQL SERVER備份目錄]=dbo.f_getdbpath(null)
--*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_getdbpath]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_getdbpath]
GO
create function f_getdbpath(@dbname sysname)
returns nvarchar(260)
as
begin
declare @re nvarchar(260)
if @dbname is null or db_id(@dbname) is null
select @re=rtrim(reverse(filename)) from master..sysdatabases where name='master'
else
select @re=rtrim(reverse(filename)) from master..sysdatabases where name=@dbname
if @dbname is null
set @re=reverse(substring(@re,charindex('\',@re)+5,260))+'BACKUP'
else
set @re=reverse(substring(@re,charindex('\',@re),260))
return(@re)
end
go
/*2.--備份資料庫
*/
/*--調用示例
--備份當前資料庫
exec p_backupdb @bkpath='c:\',@bkfname='db_\DATE\_db.bak'
--差異備份當前資料庫
exec p_backupdb @bkpath='c:\',@bkfname='db_\DATE\_df.bak',@bktype='DF'
--備份當前資料庫日誌
exec p_backupdb @bkpath='c:\',@bkfname='db_\DATE\_log.bak',@bktype='LOG'
--*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_backupdb]') and OBJECTPROPERTY(id, N'IsProcere') = 1)
drop procere [dbo].[p_backupdb]
GO
create proc p_backupdb
@dbname sysname='', --要備份的資料庫名稱,不指定則備份當前資料庫
@bkpath nvarchar(260)='', --備份文件的存放目錄,不指定則使用SQL默認的備份目錄
@bkfname nvarchar(260)='', --備份文件名,文件名中可以用\DBNAME\代表資料庫名,\DATE\代表日期,\TIME\代表時間
@bktype nvarchar(10)='DB', --備份類型:'DB'備份資料庫,'DF' 差異備份,'LOG' 日誌備份
@appendfile bit=1 --追加/覆蓋備份文件
as
declare @sql varchar(8000)
if isnull(@dbname,'')='' set @dbname=db_name()
if isnull(@bkpath,'')='' set @bkpath=dbo.f_getdbpath(null)
if isnull(@bkfname,'')='' set @bkfname='\DBNAME\_\DATE\_\TIME\.BAK'
set @bkfname=replace(replace(replace(@bkfname,'\DBNAME\',@dbname)
,'\DATE\',convert(varchar,getdate(),112))
,'\TIME\',replace(convert(varchar,getdate(),108),':',''))
set @sql='backup '+case @bktype when 'LOG' then 'log ' else 'database ' end +@dbname
+' to disk='''+@bkpath+@bkfname
+''' with '+case @bktype when 'DF' then 'DIFFERENTIAL,' else '' end
+case @appendfile when 1 then 'NOINIT' else 'INIT' end
print @sql
exec(@sql)
go
/*3.--恢復資料庫
*/
/*--調用示例
--完整恢復資料庫
exec p_RestoreDb @bkfile='c:\db_20031015_db.bak',@dbname='db'
--差異備份恢復
exec p_RestoreDb @bkfile='c:\db_20031015_db.bak',@dbname='db',@retype='DBNOR'
exec p_backupdb @bkfile='c:\db_20031015_df.bak',@dbname='db',@retype='DF'
--日誌備份恢復
exec p_RestoreDb @bkfile='c:\db_20031015_db.bak',@dbname='db',@retype='DBNOR'
exec p_backupdb @bkfile='c:\db_20031015_log.bak',@dbname='db',@retype='LOG'
--*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_RestoreDb]') and OBJECTPROPERTY(id, N'IsProcere') = 1)
drop procere [dbo].[p_RestoreDb]
GO
create proc p_RestoreDb
@bkfile nvarchar(1000), --定義要恢復的備份文件名
@dbname sysname='', --定義恢復後的資料庫名,默認為備份的文件名
@dbpath nvarchar(260)='', --恢復後的資料庫存放目錄,不指定則為SQL的默認數據目錄
@retype nvarchar(10)='DB', --恢復類型:'DB'完事恢復資料庫,'DBNOR' 為差異恢復,日誌恢復進行完整恢復,'DF' 差異備份的恢復,'LOG' 日誌恢復
@filenumber int=1, --恢復的文件號
@overexist bit=1, --是否覆蓋已經存在的資料庫,僅@retype為
@killuser bit=1 --是否關閉用戶使用進程,僅@overexist=1時有效
as
declare @sql varchar(8000)
--得到恢復後的資料庫名
if isnull(@dbname,'')=''
select @sql=reverse(@bkfile)
,@sql=case when charindex('.',@sql)=0 then @sql
else substring(@sql,charindex('.',@sql)+1,1000) end
,@sql=case when charindex('\',@sql)=0 then @sql
else left(@sql,charindex('\',@sql)-1) end
,@dbname=reverse(@sql)
--得到恢復後的資料庫存放目錄
if isnull(@dbpath,'')='' set @dbpath=dbo.f_getdbpath('')
--生成資料庫恢復語句
set @sql='restore '+case @retype when 'LOG' then 'log ' else 'database ' end+@dbname
+' from disk='''+@bkfile+''''
+' with file='+cast(@filenumber as varchar)
+case when @overexist=1 and @retype in('DB','DBNOR') then ',replace' else '' end
+case @retype when 'DBNOR' then ',NORECOVERY' else ',RECOVERY' end
print @sql
--添加移動邏輯文件的處理
if @retype='DB' or @retype='DBNOR'
begin
--從備份文件中獲取邏輯文件名
declare @lfn nvarchar(128),@tp char(1),@i int
--創建臨時表,保存獲取的信息
create table #tb(ln nvarchar(128),pn nvarchar(260),tp char(1),fgn nvarchar(128),sz numeric(20,0),Msz numeric(20,0))
--從備份文件中獲取信息
insert into #tb exec('restore filelistonly from disk='''+@bkfile+'''')
declare #f cursor for select ln,tp from #tb
open #f
fetch next from #f into @lfn,@tp
set @i=0
while @@fetch_status=0
begin
select @sql=@sql+',move '''+@lfn+''' to '''+@dbpath+@dbname+cast(@i as varchar)
+case @tp when 'D' then '.mdf''' else '.ldf''' end
,@i=@i+1
fetch next from #f into @lfn,@tp
end
close #f
deallocate #f
end
--關閉用戶進程處理
if @overexist=1 and @killuser=1
begin
declare @spid varchar(20)
declare #spid cursor for
select spid=cast(spid as varchar(20)) from master..sysprocesses where dbid=db_id(@dbname)
open #spid
fetch next from #spid into @spid
while @@fetch_status=0
begin
exec('kill '+@spid)
fetch next from #spid into @spid
end
close #spid
deallocate #spid
end
--恢復資料庫
exec(@sql)
go
/*4.--創建作業
*/
/*--調用示例
--每月執行的作業
exec p_createjob @jobname='mm',@sql='select * from syscolumns',@freqtype='month'
--每周執行的作業
exec p_createjob @jobname='ww',@sql='select * from syscolumns',@freqtype='week'
--每日執行的作業
exec p_createjob @jobname='a',@sql='select * from syscolumns'
--每日執行的作業,每天隔4小時重復的作業
exec p_createjob @jobname='b',@sql='select * from syscolumns',@fsinterval=4
--*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_createjob]') and OBJECTPROPERTY(id, N'IsProcere') = 1)
drop procere [dbo].[p_createjob]
GO
create proc p_createjob
@jobname varchar(100), --作業名稱
@sql varchar(8000), --要執行的命令
@dbname sysname='', --默認為當前的資料庫名
@freqtype varchar(6)='day', --時間周期,month 月,week 周,day 日
@fsinterval int=1, --相對於每日的重復次數
@time int=170000 --開始執行時間,對於重復執行的作業,將從0點到23:59分
as
if isnull(@dbname,'')='' set @dbname=db_name()
--創建作業
exec msdb..sp_add_job @job_name=@jobname
--創建作業步驟
exec msdb..sp_add_jobstep @job_name=@jobname,
@step_name = '數據處理',
@subsystem = 'TSQL',
@database_name=@dbname,
@command = @sql,
@retry_attempts = 5, --重試次數
@retry_interval = 5 --重試間隔
--創建調度
declare @ftype int,@fstype int,@ffactor int
select @ftype=case @freqtype when 'day' then 4
when 'week' then 8
when 'month' then 16 end
,@fstype=case @fsinterval when 1 then 0 else 8 end
if @fsinterval<>1 set @time=0
set @ffactor=case @freqtype when 'day' then 0 else 1 end
EXEC msdb..sp_add_jobschele @job_name=@jobname,
@name = '時間安排',
@freq_type=@ftype , --每天,8 每周,16 每月
@freq_interval=1, --重復執行次數
@freq_subday_type=@fstype, --是否重復執行
@freq_subday_interval=@fsinterval, --重復周期
@freq_recurrence_factor=@ffactor,
@active_start_time=@time --下午17:00:00分執行
go
/*--應用案例--備份方案:
完整備份(每個星期天一次)+差異備份(每天備份一次)+日誌備份(每2小時備份一次)
調用上面的存儲過程來實現
--*/
declare @sql varchar(8000)
--完整備份(每個星期天一次)
set @sql='exec p_backupdb @dbname=''要備份的資料庫名'''
exec p_createjob @jobname='每周備份',@sql,@freqtype='week'
--差異備份(每天備份一次)
set @sql='exec p_backupdb @dbname=''要備份的資料庫名'',@bktype='DF''
exec p_createjob @jobname='每天差異備份',@sql,@freqtype='day'
--日誌備份(每2小時備份一次)
set @sql='exec p_backupdb @dbname=''要備份的資料庫名'',@bktype='LOG''
exec p_createjob @jobname='每2小時日誌備份',@sql,@freqtype='day',@fsinterval=2
/*--應用案例2
生產數據核心庫:PRODUCE
備份方案如下:
1.設置三個作業,分別對PRODUCE庫進行每日備份,每周備份,每月備份
2.新建三個新庫,分別命名為:每日備份,每周備份,每月備份
3.建立三個作業,分別把三個備份庫還原到以上的三個新庫。
目的:當用戶在proce庫中有任何的數據丟失時,均可以從上面的三個備份庫中導入相應的TABLE數據。
--*/
declare @sql varchar(8000)
--1.建立每月備份和生成月備份資料庫的作業,每月每1天下午16:40分進行:
set @sql='
declare @path nvarchar(260),@fname nvarchar(100)
set @fname=''PRODUCE_''+convert(varchar(10),getdate(),112)+''_m.bak''
set @path=dbo.f_getdbpath(null)+@fname
--備份
exec p_backupdb @dbname=''PRODUCE'',@bkfname=@fname
--根據備份生成每月新庫
exec p_RestoreDb @bkfile=@path,@dbname=''PRODUCE_月''
--為周資料庫恢復准備基礎資料庫
exec p_RestoreDb @bkfile=@path,@dbname=''PRODUCE_周'',@retype=''DBNOR''
--為日資料庫恢復准備基礎資料庫
exec p_RestoreDb @bkfile=@path,@dbname=''PRODUCE_日'',@retype=''DBNOR''
'
exec p_createjob @jobname='每月備份',@sql,@freqtype='month',@time=164000
--2.建立每周差異備份和生成周備份資料庫的作業,每周日下午17:00分進行:
set @sql='
declare @path nvarchar(260),@fname nvarchar(100)
set @fname=''PRODUCE_''+convert(varchar(10),getdate(),112)+''_w.bak''
set @path=dbo.f_getdbpath(null)+@fname
--差異備份
exec p_backupdb @dbname=''PRODUCE'',@bkfname=@fname,@bktype=''DF''
--差異恢復周資料庫
exec p_backupdb @bkfile=@path,@dbname=''PRODUCE_周'',@retype=''DF''
'
exec p_createjob @jobname='每周差異備份',@sql,@freqtype='week',@time=170000
--3.建立每日日誌備份和生成日備份資料庫的作業,每周日下午17:15分進行:
set @sql='
declare @path nvarchar(260),@fname nvarchar(100)
set @fname=''PRODUCE_''+convert(varchar(10),getdate(),112)+''_l.bak''
set @path=dbo.f_getdbpath(null)+@fname
--日誌備份
exec p_backupdb @dbname=''PRODUCE'',@bkfname=@fname,@bktype=''LOG''
--日誌恢復日資料庫
exec p_backupdb @bkfile=@path,@dbname=''PRODUCE_日'',@retype=''LOG''
'
exec p_createjob @jobname='每周差異備份',@sql,@freqtype='day',@time=171500
6. 為什麼要學慣用tsql創建資料庫,用滑鼠操作也可以
主要是方便自動化以及在沒有管理工具的場合下用。sqlserver的安裝有多種選項,可以選擇不安裝管理工具而只有引擎(比如做一個C#程序打包給客戶,客戶根本不用知道什麼叫sql,為了減小安裝包體積就只裝express版引擎)。此時就需要用sql語句創建資料庫了。因為沒有工具可用啊。另外滑鼠操作本質上也調用的是sql語句,所以多寫sql能學到更本質的東西。