我們的12月試用賬號的免費服務里有一個Azure Sql服務,最近正好自己做一個小工具需要一個數據庫,正好可以把它當測試庫順便體驗一把Azure Sql。
概述
Azure SQL 數據庫
Azure SQL 數據庫是 Azure 中托管的關系數據庫即服務 (DBaaS),屬於“平台即服務 (PaaS)”行業類別。
最適合用於需要使用最新的 SQL Server 穩定功能,且開發與面市時間有限的新式雲應用程序。
完全托管的 SQL Server 數據庫引擎,基於最新穩定的 SQL Server Enterprise Edition。 SQL 數據庫有兩個部署選項,每個選項都以 Microsoft 所擁有、托管及維護的標准化硬件和軟件為基礎。
在 SQL Server 中,無論是本地的還是 Azure 虛擬機中,都可使用需要進行廣泛配置的內置特性和功能。 使用 SQL 數據庫時,可以即用即付,並使用向上或向外縮放選項獲得更強大的功能且不會中斷服務。 SQL 數據庫具有 SQL Server 所不能提供的其他一些功能,例如,內置的高可用性、智能和管理。
以上摘自 Azure Sql 文檔
以上說的比較官方。簡單來說就是Azure提供了一個雲數據庫服務,它的Sql引擎自然是微軟自家的Sql Server。你大致可以認為它就是一個在線版本的Sql Server,它依托Azure提供了非常強大的高可用、高性能、可以自由伸縮等功能。
創建數據庫
在portal控制台找到 Azure Sql 點擊創建:
這里主要是2有個地方要注意:
- 服務器選項如果是第一次創建需要新建一個服務器,點擊“新建”彈出創建服務器界面:
填寫服務器名稱,管理員,密碼等信息,請牢記,后面需要用到。
- 計算+儲存選項如果是第一次同樣需要創建。點擊“新建”跳轉到計算與儲存選擇界面:
以為我使用的是12月試用賬號,有免費額度。選擇“標准”實例,DTU選擇10,數據儲存選擇250G。這個配置是免費的。
注意:以上配置在12月試用賬號內是免費的,千萬不要選錯,即使選了更低級的實例也會收費。
配置完之后點擊“創建+查看”開始創建資源,等待一會后提示創建成功。這個時候我們的Azure Sql 數據庫就創建好了。
使用SSMS管理數據庫
通常我們管理Sql Server數據庫的時候都會使用SSMS(Microsoft SQL Server Management Studio)進行新建,查詢等操作。那么Azure Sql 同樣支持SSMS工具進行連接並管理。
登錄數據庫
跟連接普通的Sql Server數據庫一樣在登錄界面填寫:
服務器名稱:這里填寫前面創建服務器的時候填寫的名稱及域名
身份驗證:SQL Server 身份驗證
登錄名:填寫前面創建服務器的時候填寫的管理員名稱
密碼:填寫前面創建服務器的時候填寫的管理員密碼
新建防火牆規則
填寫完之后點擊“連接”開始嘗試連接數據庫。第一次連接會提示新建防火牆規則。 我們需要在portal上把客戶端的ip加入白名單。
選擇左側菜單“概述”,點擊“設置服務器防火牆”
在客戶端ip一欄,填寫本機的ip地址。也可以填寫一個網段。
配置完成后點擊“保存”。提示成功后重新使用SSMS連接服務器,這次成功連接上去了。
管理數據
連接成功后就可以像普通Sql Server一樣進行查詢數據等操作了。
新建一張表Table_1:
編輯一行數據:
查詢數據:
使用Ado.net操作數據
以上演示了使用SSMS來管理操作數據,下面演示下使用.NET Ado.net技術操作下Azure Sql。使用Ado.net操作Azure Sql我們完全可以把Azure Sql當做SqlServer來使用。所以我們只要使用SqlServer的Data Provider來操作就可以了。
安裝Dapper
為了偷懶直接使用Dapper來演示,因為Dapper本身就是基於Ado.net技術實現的。
新建一個控制台項目,使用Nuget安裝Dapper。
編寫CRUD代碼
我們使用Dapper來編寫數據庫改刪查代碼。數據庫連接串可以在portal上點擊左側“數據庫連接字符串”菜單獲取。
static IDbConnection GetConnection()
{
var connstring = "x";
var conn = new SqlConnection();
conn.ConnectionString = connstring;
return conn;
}
static void Main(string[] args)
{
using (var conn = GetConnection())
{
conn.Open();
//insert
var result = conn.Execute("insert into Table_1 values (@id, @name, @birthday)", new { id=0, name = "user0", birthday=DateTime.Now });
Console.WriteLine("Run insert into {0}", result>0?"success":"fail");
result = conn.Execute("insert into Table_1 values (@id, @name, @birthday)", new { id = 1, name = "user1", birthday = DateTime.Now });
Console.WriteLine("Run insert into {0}", result > 0 ? "success" : "fail");
//select
var list = conn.Query<Table_1>("select * from Table_1");
foreach (var row in list)
{
Console.WriteLine("id:{0} name:{1} birthday:{2}", row.Id, row.Name, row.Birthday);
}
//update
result = conn.Execute("update Table_1 set Name = @name where id = @id", new { id = 0, name = "user00" });
Console.WriteLine("Run update {0}", result > 0 ? "success" : "fail");
//delete
result = conn.Execute("delete from Table_1 where id = @id", new { id = 0});
Console.WriteLine("Run delete {0}", result > 0 ? "success" : "fail");
}
Console.ReadLine();
}
運行結果
寫完代碼我們直接F5運行一下,可以看到我們成功的使用Ado.net操作了數據。
總結
通過以上我們簡單介紹並演示了如果使用Azure Sql數據庫。絕大部分時候我們可以把Azure Sql當做SqlServer來管理或者用代碼操作。這為我們從本地數據庫遷移到Azure Sql數據庫提供了非常巨大的方便。對於應用層代碼,只需要更改連接字符串就可以了。當然Azure Sql數據庫跟本地Sql Server還是有一些差異的,在遷移前請先閱讀文檔:解析遷移到 SQL 數據庫的過程中的 Transact-SQL 差異