国产精品青草久-国产精品情侣愉拍-国产精品区网红主-国产精品区一区二-国产精品热久久-国产精品热热热-国产精品人aⅴ-国产精品人成在线-国产精品人妻人伦-国产精品人人

金喜正规买球

SQL Compare使用教程:與SQL Compare或SQL Change Automation一起部署數據和架構

翻譯|使用教程|編輯:楊鵬連|2020-09-03 09:54:02.973|閱讀 336 次

概述:您想使用SQL Compare或SQL Change Automation(SCA)創建或更新數據庫,同時確保其數據符合您的期望。

# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>

SQL Compare是一款比較和同步SQL Server數據庫結構的工具。現有超過150,000的數據庫管理員、開發人員和測試人員在使用它。當測試本地數據庫,暫存或激活遠程服務器的數據庫時,SQL Compare將分配數據庫的過程自動化。

點擊下載SQL Compare試用版

您想使用SQL Compare或SQL Change Automation(SCA)創建或更新數據庫,同時確保其數據符合您的期望。您希望避免每次都運行任何其他PowerShell腳本,并且希望將所有內容(包括數據)保持在源代碼控制中。您只想讓一切簡單。Phil Factor通過MERGE從存儲過程中生成腳本演示了它是如何完成的。

如果沒有很多數據,或者只有幾個需要一些靜態數據的表,則可以使用SQL Compare或SCA輕松完成此操作,方法是添加一個部署后腳本,該腳本將作為同步。否則,它只是部署過程中要運行的一個額外腳本。

我們將使用上一篇文章將自定義部署腳本與SQL Compare或SQL Change Automation結合使用中描述的技術,該技術涉及運行一系列MERGE腳本以確保數據庫具有所需的數據。為了創建這些MERGE腳本,我使用了PPP(相當強大的過程),我將在這里進行介紹。手工編寫這些腳本很費力,盡管您幾乎不需要重復創建腳本的繁瑣工作,但是需要對它進行修改以響應相應表的更改。

有什么問題呢?

如果沒有數據,那么重新設計數據庫將很簡單。無論我們拖延了繁瑣的開發工作,當我們要部署到UAT,登臺和生產時,在保持數據完整的同時部署架構更改的問題始終會困擾我們。在進行大量的重新設計之后,無論選擇哪種方式創建數據庫的新版本,我們總是冒著在處理現有數據時遇到困難的風險,尤其是在拆分,合并或重命名表的情況下。

盡管我一直主張在整個開發過程中測試您的數據遷移腳本,但有時您只需要一個帶有某些描述的數據的工作系統,該數據是從源代碼控制構建的。為此,我們有其他選擇:

  1. 構建元數據并隨后使用BCP導入數據(請參閱使用SQL Change Automation從頭開始創建數據庫)。
  2. 作為構建的一部分,在受影響的表中將數據從舊模式“遷移”到新表(在基于狀態的數據庫部署過程中處理棘手的數據遷移)
  3. 使用部署前和部署后腳本處理該問題,使DML活動與用于構建數據庫的DDL保持牢固的距離。(將自定義部署腳本與SQL Compare或SQL Change Automation一起使用)
通常,我們僅從源進行一次構建,然后在開發和測試中將其與各種數據庫副本同步。通常,現代關系數據庫在發出ALTER數據庫命令時就知道如何保存數據,而同步工具(如SQL Compare)知道在SQL Server無法進行數據保存時有很多技巧。但是,總有一段時間,由于不確定性太大,因此變得不可能。此時,您需要使用T-SQL腳本將其拼寫出來,但是您可以這樣做。

我將描述的技術只能與“靜態數據”一起使用,而不會不斷更新。不過,這對于開發人員數據非常有用,因此它適合許多開發和測試工作。如果您希望使用相同的技術來同步UAT,登臺或生產(例如在拆分表之后),則需要通過剪切所有其他連接來“使數據庫靜默”,并在您進行數據動態合并時做分裂。我將在另一篇文章中解釋如何執行此操作。

合并

想象一下,我們想要一些代碼來確保一個表僅包含我們想要的數據,沒有更多,更少。我們使用MERGE語句,以便僅執行必要的插入或刪除操作。讓我們舉一個簡單的例子,來自AdventureWorks:

SET IDENTITY_INSERT [Adventureworks2016].[HumanResources].[Department] ON;
MERGE INTO [Adventureworks2016].[HumanResources].[Department] AS target
  USING (VALUES (1, 'Engineering', 'Research and Development', '2008-04-30T00:00:00'),
(2, 'Tool Design', 'Research and Development', '2008-04-30T00:00:00'),
(3, 'Sales', 'Sales and Marketing', '2008-04-30T00:00:00'),
(4, 'Marketing', 'Sales and Marketing', '2008-04-30T00:00:00'),
(5, 'Purchasing', 'Inventory Management', '2008-04-30T00:00:00'),
(6, 'Research and Development', 'Research and Development', '2008-04-30T00:00:00'),
(7, 'Production', 'Manufacturing', '2008-04-30T00:00:00'),
(8, 'Production Control', 'Manufacturing', '2008-04-30T00:00:00'),
(9, 'Human Resources', 'Executive General and Administration', '2008-04-30T00:00:00'),
(10, 'Finance', 'Executive General and Administration', '2008-04-30T00:00:00'),
(11, 'Information Services', 'Executive General and Administration', '2008-04-30T00:00:00'),
(12, 'Document Control', 'Quality Assurance', '2008-04-30T00:00:00'),
(13, 'Quality Assurance', 'Quality Assurance', '2008-04-30T00:00:00'),
(14, 'Facilities and Maintenance', 'Executive General and Administration', '2008-04-30T00:00:00'),
(15, 'Shipping and Receiving', 'Inventory Management', '2008-04-30T00:00:00'),
(16, 'Executive', 'Executive General and Administration', '2008-04-30T00:00:00')
)source(DepartmentID, Name, GroupName, ModifiedDate)
ON source.DepartmentID = target.DepartmentID
WHEN NOT MATCHED BY TARGET THEN
  INSERT ( DepartmentID, Name, GroupName, ModifiedDate )
  VALUES ( DepartmentID, Name, GroupName, ModifiedDate )
WHEN NOT MATCHED BY SOURCE THEN
  DELETE;
SET IDENTITY_INSERT [Adventureworks2016].[HumanResources].[Department] OFF;
該語句將確保基于主鍵的值在每一行都有條目。對于開發工作,我們不太在乎非關鍵列是否不同。如果還需要確保其他列中的值相同,則需要在WHEN MATCHED短語中附加一條語句,以便在必要時更新值,例如:

([WHEN MATCHED [AND <clause_search_condition>] THEN <merge_matched> ] [...n])

您真的要為數據庫中的所有表手工編寫這樣的代碼嗎?不見得。這是PPP的輸出,稱為#SaveMergeStatementFromTable,我將在后面顯示:

   DECLARE @TheStatement NVARCHAR(MAX)
   EXECUTE #SaveMergeStatementFromTable 
     @tablespec='Adventureworks2016.[HumanResources].[Department]',
     @Statement=@TheStatement OUTPUT;
     PRINT @TheStatement
它使用語句創建數據源,MERGE從您在中指定的表中創建腳本。它返回此腳本作為輸出變量。然后您可以執行它。這將確保在關鍵字段中具有正確值的行數正確。這是一個完整而美妙的解決方案嗎?不完全的。它適用于小型表,但是multi-row 子句的伸縮性不好。最好將其分解為較小的語句。對于較大的表,最終將達到需要的大小,然后使用本機BCP將數據導入到表中。如果您希望執行,則可以將數據BCP到臨時表中,對其進行良好索引,然后將其用作的源,而不是使用a@tablespecVALUESVALUESTRUNCATEMERGEMERGE表值構造器。

您還可以從文件或腳本中保存JSON,并將其用作表源。對于本文,我將堅持簡單性,并演示使用多行VALUES語句的原理,這些語句可以輕松地保留在源代碼控制中以構建開發數據庫或添加靜態數據。

創建MERGE語句的數據集

有不同的方法可以做到這一點。一種是使用來自SSMS的SQL。為此,您只需要對文件系統中為此類活動保留的部分進行讀寫訪問。對于該演示,我創建了一個目錄' c:\ data \ RawData ',并授予了SQL Server訪問權限。您還需要暫時允許使用xp_cmdshell。對于那些神經質的人,有時我還將提供一個可以代替使用的PowerShell腳本。

出于懷舊之情,我們將在古老的NorthWind數據庫上進行嘗試,因為它甚至不會給微薄的文件系統帶來負擔。該腳本將執行#SaveMergeStatementFromTablePPP(因此,您首先需要創建PPP;請參閱后面的內容),并依次提供每個表的名稱作為源。對于sp_msforeachtable(和sp_msforeachdb)系統過程,SQL Server在表或數據庫的名稱中替換?您作為參數提供的字符串中的占位符(' ')。PPP會MERGE在每種情況下(@CreatedScript)生成相應的語句。對于每個表,我們使用其MERGE語句填充臨時表(##myTemp),然后將其寫到指定目錄中的自己的文件中(不要錯過路徑中的尾隨反沖):

USE northwind
DECLARE @ourPath sysname ='C:\data\RawData\Northwind\MergeData\';
DECLARE @TheServer sysname =@@ServerName
Declare @command NVARCHAR(4000)= '
print ''Creating SQL Merge file for ?''
DECLARE @CreatedScript NVARCHAR(MAX)
EXECUTE #SaveMergeStatementFromTable  @TableSpec=''?'', @Statement=@CreatedScript OUTPUT
CREATE TABLE ##myTemp (Bulkcol nvarchar(MAX))
INSERT INTO ##myTemp (Bulkcol) SELECT @CreatedScript
print ''Writing out ?''
EXECUTE xp_cmdshell ''bcp ##myTemp out '+@ourPath+'?.SQL -c -C 65001 -T -S '+@TheServer+' ''
DROP TABLE ##myTemp'
EXECUTE sp_msforeachtable @command
GO
如果成功,它將給出以下信息:
如果要使用SQL Compare或SCA將這種數據部署合并到架構同步中,我們將只需要一個腳本。我們還需要在開始時禁用約束,并在完成后全部啟用它們。這需要對該方法進行非常小的修改,但是原理保持不變。
USE northwind
DECLARE @TotalScript NVARCHAR(MAX)
DECLARE @DestinationDatabase sysname='WestWind'
DECLARE @ourPath sysname ='C:\data\RawData\Northwind\MergeData\TotalFile.sql';
DECLARE @TheServer sysname =@@ServerName
DROP TABLE IF exists ##myTemp
CREATE TABLE ##myTemp (Bulkcol nvarchar(MAX))
DECLARE @DisableConstraints nvarchar(4000)='Print ''Disabling all table constraints''
'
SELECT @DisableConstraints=@DisableConstraints+'ALTER TABLE [WestWind].[dbo].'+QuoteName(name)+' NOCHECK CONSTRAINT ALL
' FROM sys.tables
INSERT INTO ##myTemp (BulkCol) SELECT @DisableConstraints
DECLARE @command NVARCHAR(4000)= '
print ''Creating SQL Merge file for ?''
DECLARE @CreatedScript NVARCHAR(MAX)
EXECUTE #SaveMergeStatementFromTable  @TableSpec=''?'',@DestinationDatabase='''+@DestinationDatabase+''',@Statement=@CreatedScript OUTPUT
INSERT INTO ##myTemp (Bulkcol) SELECT coalesce(@CreatedScript,'''')+''
''
'
SELECT @command
EXECUTE sp_msforeachtable @command
print 'Writing out file'
DECLARE @BCPCommand NVARCHAR(4000)='bcp ##myTemp out '+@ourPath+' -c -C 65001 -T -S '+@TheServer
EXECUTE xp_cmdshell @BCPCommand
DECLARE @endCommand VARCHAR(4000)= (SELECT 'ECHO EXEC sp_msforeachtable ''ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all'' >>'+@ourPath)
EXECUTE xp_cmdshell @endCommand
DROP TABLE ##myTemp
奇怪的是,當SQL Compare執行synch腳本時,如果您不小心,它可能會為在SSMS中執行腳本時能正常工作的代碼提出錯誤。這解釋了為什么逐表禁用約束。這也解釋了為什么我避免使用GO批量定界符。

這將產生一個文件...

如果直接在SSMS中執行此文件,它將檢查每個表并進行必要的插入和刪除操作,以確保數據相同。當添加到同步腳本后,它將對您創建或更改的數據庫執行相同的操作。

如果您希望使用其他名稱部署到數據庫,則可以將@DestinationDatabase可選參數設置為#SaveMergeStatementFromTable正在創建或同步的數據庫的名稱,正如我在前面的代碼中所演示的那樣。如果我需要一個依賴于先前腳本的腳本來提供數據庫上下文(SQL Compare和SCA會執行此操作),則可以通過將@DontSpecifyTheDatabase可選參數設置為1 來隱藏三部分名稱的數據庫部分。

現在我們有了文件,可以將其放入“源代碼管理”中。好的,我在這里是假裝的,因為我沒有開發Northwind。我要做的就是通過使用SQL Compare將Northwind數據庫與空目錄進行比較來創建源代碼管理目錄。然后,我已經添加了自定義腳本目錄及其部署后和部署前的子目錄。

使用真實的數據庫,MERGE只要修改表,就可以非常簡單地運行SQL來生成語句。合并語句依賴于它們作用于具有相同名稱的相同列數的表。如果不是,將出現錯誤。如果您修改源腳本中的表,以使目標數據庫中的一個或多個表不同,則相應的同步后合并語句將需要符合新設計。

現在,我將合并腳本(TotalFile.sql)放入Post-Deployment目錄中。一旦開發了此技術,則可以通過指定適當的部署后目錄的正確路徑,通過SQL Batch文件或PowerShell腳本直接將文件寫入。

從那時起,我可以使用此目錄同步數據和架構。SQL Compare會將腳本追加到它生成的生成腳本的末尾,并使用它來填充表。請注意,在數據填充操作之前禁用約束并在之后啟用約束很重要。如果您有意在源代碼管理的對象構建腳本中禁用了約束,則可能導致問題,但是我們將忽略該問題。

強大的程序

我使用了臨時過程來完成創建MERGE腳本中的驢工作。這是我用來提取數據的一系列過程中的一個,我在//github.com/Phil-Factor/JSONSQLServerRoutines上維護這些過程。

如果指定表,則此PPP將創建一條MERGE語句。它必須在SQL Server 2017或更高版本上運行,因為它使用了該STRING_AGG功能。如果使用XML串聯技巧,可以將其更改為在SQL Server 2016上運行。

它使用VALUES包含表中數據的多行語句創建表源,并將其用作MERGE語句源,然后可以在提供其名稱的目標表上執行該語句。如所討論的,該技術僅對小表才可行,因為使用該VALUES子句意味著該子句隨比例降低。

源表或查詢可以通過的' database.schema.table'格式指定@tablespec,也可以通過分別提供表名稱,模式和數據庫來指定。您可以提供查詢,盡管在這種情況下,您將需要提供目標表的名稱。您的查詢將提供源數據,并且必須以正確的順序為您指定的目標表生成正確的表源,并以正確的順序顯示正確的列。

完善系統

除了表名,您還可以向該例程提供查詢。該查詢必須產生與目標表相同的結果,當然不包括計算列。這有效地使您可以指定例如如何填充表拆分的結果表。通常,MERGE我們通過傳遞給過程的表來確定主鍵。但是,查詢結果不能有主鍵。您可以通過兩種方法解決此問題。

首先,您可以填充已填充了所需測試數據的臨時表,然后添加主鍵。我們通過使用臨時表作為源的查詢將臨時表中的數據傳遞給過程:

USE AdventureWorks2016;
SELECT TOP 100 Customer.PersonID, AccountNumber,
  Identity(INT, 1, 1) AS uniquifier, PersonType, Title, FirstName, MiddleName,
  LastName, Suffix, AddressLine1, AddressLine2, City, PostalCode, Name
  INTO #tempTable
  FROM Sales.Customer
    INNER JOIN Person.Person
      ON Customer.PersonID = Person.BusinessEntityID
    INNER JOIN Person.BusinessEntityAddress
      ON Person.BusinessEntityID = BusinessEntityAddress.BusinessEntityID
    INNER JOIN Person.Address
      ON BusinessEntityAddress.AddressID = Address.AddressID
    INNER JOIN Person.AddressType
      ON BusinessEntityAddress.AddressTypeID = AddressType.AddressTypeID;
ALTER TABLE #tempTable ALTER COLUMN PersonID INTEGER NOT NULL;
ALTER TABLE #tempTable
ADD CONSTRAINT MyTempPKConstraint PRIMARY KEY CLUSTERED
      (PersonID, AccountNumber, uniquifier);
DECLARE @TheStatement NVARCHAR(MAX);
EXECUTE #SaveMergeStatementFromTable @Query = 'Select top 100 * from #tempTable',
  @Destination = 'MyTempTable', @Statement = @TheStatement OUTPUT;
PRINT @TheStatement;
DROP TABLE #tempTable;
或者,您可以根據需要指定要使用的主鍵。
USE AdventureWorks2016;
DECLARE @TheStatement NVARCHAR(MAX);
EXECUTE #SaveMergeStatementFromTable 
  @Query = '
  SELECT top 10 Customer.PersonID, AccountNumber,
  PersonType, Title, FirstName, MiddleName,
  LastName, Suffix, AddressLine1, AddressLine2, City, PostalCode, Name
  FROM Sales.Customer
    INNER JOIN Person.Person
      ON Customer.PersonID = Person.BusinessEntityID
    INNER JOIN Person.BusinessEntityAddress
      ON Person.BusinessEntityID = BusinessEntityAddress.BusinessEntityID
    INNER JOIN Person.Address
      ON BusinessEntityAddress.AddressID = Address.AddressID
    INNER JOIN Person.AddressType
      ON BusinessEntityAddress.AddressTypeID = AddressType.AddressTypeID',
  @Destination = 'MyTempTable', 
  @PrimaryKeys='PersonID, AccountNumber',
  @Statement = @TheStatement OUTPUT;
PRINT @TheStatement;
結論

進行SQL比較并發現數據和架構與源數據庫相同是令人驚訝的。如果數據庫中的表設計發生更改,則只需要準備一個新的部署后腳本,但是由于它都是自動進行的,因此我認為這反倒不會帶來太大麻煩。我使用多行VALUES語句是因為它看起來比使用JSON來保存數據要少一些,但是我認為使用JSON可以允許使用更大的表。

為什么不只使用本地BCP來存儲表?按照我在此處演示的方法進行操作,意味著普通的SQL Compare或SCA部署可以完成此操作而無需其他腳本。一切都由數據庫腳本保存。

相關產品推薦:

SQL Prompt:SQL語法提示工具

SQL Toolbelt:Red Gate產品套包

SQL Monitor:SQL Server監控工具


想要購買SQL Compare正版授權,或了解更多產品信息請點擊


標簽:

本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn

文章轉載自:

為你推薦

  • 推薦視頻
  • 推薦活動
  • 推薦產品
  • 推薦文章
  • 慧都慧問
掃碼咨詢


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
www.国产福利 | 国产动漫频道 | 日韩理论电影在线观看 | 国产在线观看激情 | 日韩人妻不卡一区二区三区 | 亚洲一卡二卡三卡四卡无卡 | 国内精品伊人久久久久av影院 | 日本打屁股sm调教 | 97青草香蕉依人在线视频 | 福利区在| 性色午夜婬片aaa播放 | 香蕉亚洲国产福利91 | 精品少妇人妻av无码专区 | 亚洲欧美高清精 | 亚洲国产精品成人久久久 | 日本视频在线观看一区二区三区 | 日韩精品无码久久一区二区三 | 国产精品成人一区二区三区 | 在线观看视频中文字幕三区 | 久久99精品国产 | 激情综合婷婷 | 日本a片把舌头伸进 | 亚洲av无码久久精品色欲 | 亚洲av不卡一区二区三区 | 国产高潮又爽又无遮挡又免费 | 国产精品成人久久久久 | 精品人妻少妇一区二区大牛影视 | 日韩欧美精品一区 | 99精品无人区乱码1区2区3区 | 最新国产精品亚洲 | 91精品国产色综合久久 | 四虎影院久久久 | 国产热の有 | 午夜精品无码免费视频 | 国产麻豆成人传媒免费观看 | 日韩一区二区三区射精 | 少妇高潮喷水久久久久久久久久 | 国产精品丝袜视频 | 午夜精品久久久久成人 | 国产精品91天 | 午夜a级成人免费毛片 | 人妻免费公开在线视频 | 97无码人妻视 | 国产亚州中文字幕久久网 | 亚洲日韩av片在线观看 | 日韩版码免费福利视频 | 午夜婷婷精品午夜无码a片影院 | 黄色成年人视频在线 | 中文字幕一区二区三区在线不卡 | 欧美精品网站一区二区三区 | 91短视频app免费版下载 | 果冻传媒电影海外动漫高清在线观看 | 亚洲欧美精品午夜电影 | 午夜免费的国产片在线观看 | 日本综合国产欧美 | 国产高潮一区在线流白浆 | 亚洲综合国产精品一区二区99 | 日本一区二区三区视频免费看 | 97久久久超国产精品 | 国产精品无码a∨精品影院 国产精品无码av无码 | 午夜无码 | 国产国产久热这里只有精品 | 亚洲精品码一区二区三区 | 最新欧美精品一区二区三区 | 少妇真人直播免费视频 | swag精品电视剧在线观看 | 精品久久久中文字幕二区 | 东京热av加勒比一区二区 | 国产午夜精品理论片久久影院 | 亚洲乱码国产乱码精品精 | av网站在线免费观看 | 国产精品免费播放一区二区 | 亚洲av成人一区二区三区在线观看 | 无码系列 | 欧美尤物精品国产中文 | 日韩一级a欧美成人 | 国产精品99久久久久久宅男 | 国产高清极品美女黄色网站 | 亚洲成a人片在 | 亚洲无码精品人妻无遮挡久久久九 | 在线播放成人电影片 | 97色伦背后的神秘故事与深刻思考 | 美女高潮 | 午夜亚洲乱码伦小说区 | 久久成人麻豆午夜电影 | 97人人模人 | 中文字幕日韩人妻无码 | 国产精品爆| 国产精品亚洲二区在线观看 | 人人爽人人爽人人片a免费 人人爽人人爽人人爽 | 欧美色欧美 | 午夜tv| 91无码人妻精品一区二区蜜桃 | 国产污片在线观看 | 精品曰韩av专区一区二区 | 91成人免费观看 | 99久久国语露脸精品对白 | 国产男女猛烈无遮挡 | a级毛片大片免费香蕉网 | 国产成人无码aⅴ片在线观看导 | 91午夜福利国产在线观看 | 日本高清一本一区二区三区 | 日韩亚洲欧美久久久www综合 | 色欲国产av | 久久91精品国产91久久跳舞 | 亚洲午夜在线观看 | 国产一区视频观看 | 性色av无码久久一区二区三区 | 亚洲成a人片在线观看中文无码 | 国产av亚洲精品ai换脸电影 | 国产精品美女久久久 | 国产精品秘麻豆果 | 中文字幕亚洲综合久久 | 97无码人妻福利免费公开在线视频 | 无码国产免费不卡视频 | 中文字幕无码在线观看 | 国产亚洲福利在线视频 | 成人精品一区二区户外勾搭野战 | 欧美一区 | 亚洲成a人片在线天堂 | 无人区国产剧免费在线观看 | 精品无码av一区二区三区不卡 | 日产国产精品亚洲系列 | 精品无码国产自产拍在线观看蜜桃 | 精品无码区| a天堂视频在线观看 | 亚洲日韩欧美成人 | 国产精品美女久久久久av超清 | 无码vs高清在线视 | 国产精品香蕉 | 黑人和国产小电影 | 亚洲日本中文字幕在线四区 | 果冻传媒在线观看九一制片厂 | 日韩电影一区二区三区红桃 | 一级片在线观看 | 91蜜桃国产 | 国产精自产拍久久久久久蜜 | 92午夜福利合集10 | 亚洲ⅴ国 | 精品精品国产理论在线观看 | 久久9国产影视大全99久 | av无码专区 | 精品日韩欧美一区在线播放不 | 久久99精品久久久久久无毒不卡 | 国产l精| 午夜无码s片在线观看影院 午夜无码不卡中文字幕最新 | 午夜国产一级片 | 午夜电影侵犯美女啊啊好爽 | a人亚洲精v品无码 | 国产精品亚洲一区在线播放 | 亚洲av无码精品国产午夜久久 | 国产免费午夜福利片在线试看 | 国产精品成人va | 亚洲第一av片在线观看 | 国产欧美日韩在线人成aaaa | 91成人精品爽啪在线观看 | 久久国产爆乳无码视频在线观看 | 国产一级毛片午夜福利 | 91精品自在线在线视频 | 人妻少妇精品中文字幕av | 国产av午夜精品一区二区入口 | 亚洲欧美色图 | 国产午夜精品一区二区三区不 | 91制片| 欧美日韩激情亚洲国产 | 国内不卡1区2区 | 久久成人国产精品免费软件 | 亚洲av无码一区二区三区电影 | 国产91精品不卡在线 | 天美传媒免费观看一二三在线 | 欧美日韩人妻精品一区二区三区 | 亚洲精品天堂成人片av在线播放 | 欧美日韩无线码在线观看 | 中文字幕无码精品三级在线电影 | 日韩在线色欲一 | 成人无码区免费a片www | 日韩中文无码有码免费视频 | 成年影院 | 国产免费av片在线观看丈 | 国产美女91ywav | 国产日韩精品无码区免费专区国产 | 亚洲无码免费在 | 99久久精品免费看国产一区二 | 一区二区不卡不卡 | 亚洲av一本岛在线播放 | 国产成人av片免费 | 91大神在线观看 | 果冻传媒网站入口 | 91影院 | 无码日韩av一区二区三区 | 日本精品三级视频 | 黄片在线免费播av | 亚洲国产av无码精品 | 欧美日韩国产激情一区 | 99国产精品99久久久久久 | 99久久精品费精品国产 | 国产成人午夜福利在线观看 | av在线免费观看无码 | 伊人亚洲综合中文字幕 | 成人性生交大片免费看中文 | 国产无码专区精品 | 99re免费99re在线视频 | 99久久综合精品国产 | 午夜美女国产一区 | 欧美日韩在线视频一区 | 国产福利精品在线观看 | 国产麻豆剧传媒精品国产av | 成人性生交大片免费看96 | 亚洲精品ⅴ在线观看 | 日韩人妻无码一区二区三区综 | 国产片91为何成为电影行业新宠 | 久久www免费人成精品香蕉 | 国产一区二区三区亚洲欧美 | 国产精品亚洲欧美大片在线观看 | 色欲精品国产一区二区三区av | 91九色国产porny| 欧美va天堂v国产综合 | 亚洲综合无码一区二区加勒此 | 亚洲av无码久久寂寞少妇多毛 | 亚洲av成人影片在线观看 | 国产在线自在拍91 | 日韩专区国产国产精品 | 欧日韩在线不卡视 | 国产在线无码免费网站永久 | 日本免费在线观看a∨ | 国产精品日本一区二区在线 | 在线天堂中文在线资源网 | 亚洲成a人片在线观看高清 亚洲成a人片在线观看国产 | 欧美日韩中文字幕 | 亚洲另类国产精品无码 | 天堂网国产69高清在线视频 | 高清亚洲乱伦三级 | 无码精品人妻一区二区三区免费 | 成人久久欧亚洲精品无码久久性 | 亚洲日产?v中文字幕无码偷拍 | 日韩乱码人妻无码中文字幕久久 | 精品国产欧美精品v | av无码国产流畅 | 国产免费aⅴ大片在线观看 国产免费aⅴ片在线观看麻豆 | 无码精品a∨在线观 | 在线看性爱av网站 | 神马午夜福利视频 | 无码在线一区二区在线观看网站 | 国产上床视频在线观看 | 无码久久久久冒白浆 | 午夜无码在线免费网站 | 国产a级三级三级三级 | 成人精品一区二区三区不卡免费看 | 无码国模大尺度视频在线观看 | 中日韩精品无码一区二区三区 | 亚洲国产精品艾草 | 亚洲欧美乱综合图片区小说区 | 国产精品妇女一二三区 | 日韩午夜高清福利片在线观看 | 亚洲一区二区三区不卡在线播放 | 亚洲欧美精品伊人久久 | 国产一区二区在线 | 精品无码av一区二区三区不卡 | 91亚色视频在线观看 | 精品伊人久久久大香线蕉天堂 | 久久av无码 | 国产精品麻豆成人av电影 | 999在线视频精品免费播放观看 | 亚洲av成人无码网天堂 | 国产又黄又大又粗视频 | 免费无码v片在线观看中文 免费无码成人av在线播放不卡 | 爆乳国产中文在线观看 | 性生大片免费观看668 | 色妞ww精品视 | 国产精品成人av片免费看网站 | 亚洲aⅴ三级一区二区 | 中文字幕在线日亚 | 凹凸国产熟女精 | 亚洲欧美国产综合三区ai换脸 | 成人区人妻精品 | 无码精品国产一区二区三区免费 | 久久成人免费 | 极品中文字幕国产 | 欧美成人精品高清在线播放 | 成人网站免费大全日韩国产 | 最新国产乱人伦偷精品免费网 | 国产成人综合亚洲天堂 | 精品九九99久久人妻免费 | 欧美喷潮十大 | 九色视频安卓最新版1.5下载 | 亚洲欧美日97影 | 亚洲欧美人成网站综合在线 | 国产精品99久久久久久宅男 | 中文字幕在线免费视频 | 无码影在线观看 | 在线播放国产精品三级 | 国产成人小午夜视频在线观看 | av天堂久久 | 国产美女一级a在线 | 国产亚洲精品欧洲在线观看 | 成人精品综合免费视频 | 日本成a人片 | 日本高清在线播放一区二区三区 | 日韩国产午夜一区二区三区 | 午夜福利视频 | 日韩人妻无码一区二区三区综 | 天天干天天操天天摸 | 中文亚洲av片在线观看不卡 | 激情黄色在线网站 | 国产拳头交一 | 久久av无码精品人妻系列 | 亚洲国产一成人久久精品 | md豆传媒一二三区 | 国产又大又硬又粗 | 久久99精品无码一区二区 | 91超碰在线观看 | 精品成人大胸美女视频在线播放 | 精品一区二区三区免费播放 | 3d动漫精品一区二区三区 | 婷婷五月激情国产在线 | 无码高清影视网免费观看超清 | 精品少妇人妻av无码专区 | 亚洲一级片内射视正片 | 无码人妻精品一 | 欧美午夜片欧美 | 亚洲欧美成 | 国产精品视频第一区二区三区 | 国产性一交一乱一伦一色一情 | 色婷婷六月桃花综合影院 | 国产人妖乱国产精品人妖 | 国产精品乱码在线观看 | 国产成a人亚洲精品无码樱花 | 成人精品视频99 | 99精品亚洲| 亚洲无码在线a看 | 国产高清无码在线观看 | 无码视频一区二区三区在线观看 | md豆传媒一二三区 | 中文字幕亚洲高清综合 | 国产特级亚州一级淫片 | 国产高潮又爽又无遮挡又免费 | 中文亚洲av片在线1观看 | 亚洲国产专区 | 人人妻人人爽 | 精品特级一级毛片 | 国产成人v一区二区毛片 | 成年在线观看免费人视频 | www夜片内射视频日韩精品成人 | 91导航小污女导航天天夜夜爽 | 99热国产这里只有精品 | 亚洲午夜精品一级在线播放放 | 激情五月亚洲综合中文专区 | 国产欧美日韩综合精品一区二区 | 91九色熟女| 亚洲精品偷拍区偷拍无码 | 精品国产呦| 亚洲综合无码一区二区加勒此 | 麻豆国产午夜福利片在线观看 | 欧美成人四级剧情在线播放 | 91麻豆产精品久久久久久夏晴子 | 亚洲av永久无码野狼在线观看 | 亚洲无码精品在线播放 | 亚洲av日韩综合一区久热 | 久久99热狠狠色精品一区 | 丰满人妻跪趴高撅肥臀 | 亚洲欧美日韩漫画 | 亚洲精品老司机在线观看 | 日韩精品三 | 国产一级做a爰片在线看免费 | 欧美一区二区三区激情 | 国产思思精品视频 | 国产精品热久久无码av | 99久久人妻无码精品系列 | 综合欧美综合欧美色 | 国产ⅴ片在线播放免费无码 | 国产精品9 | 久久99网 | 果冻传媒一区二区天美传媒 | 亚洲精品大 | 久久成人亚洲香蕉草草 | 最新国产剧推荐 | 国产高潮国产高潮久久久 | 国产成人av一区二区三区不卡 | 欧美日韩不卡合集视频 | 亚洲v天堂v手机在线观看 | 精品熟人妻一区二区三区四区不卡 | 日韩欧美成人高清 | 欧美亚洲国产激情一区二区 | 国产不卡福利片在 | 亚洲日韩中文无码视频 | 亚洲精品中文字幕无码久久久久久 | 亚洲av成人无码久久影院 | 日韩av在线免费观看 | 中文字幕久久精品乱码乱码 | 日韩精品影视 | 99国产欧美久久久精品 | 亚洲精品天堂无码中文字幕 | 99久久精品免费看国产一区乱理片 | 欧美熟妇av欧差aa片 | 欧美精品top. | 欧美一区二区三区精品不卡 | 亚洲av一点也不卡一区二区 | 97亚洲狠狠色综合久久 | 久996视频精品免费观看 | 国产美女精品久久久久中文 | 亚洲欧美日 | 日韩人妻精品无码一区二区三区 | 激情五月色综合国产精品 | 国产乱码卡二卡三卡4w | 精品人妻一区二区三区四在线 | 国产青青草天堂岛av片 | 中文字幕精品无码2025 | 国产精品久线在线观看 | 麻豆视频免费看 | 在线91精 | 欧美深夜福利网站在线观 | 99热视热频这里只有精 | 亚洲国产精品và在线看 | 国产精品美女久久久久久2025 | 日日噜噜夜夜狠狠视频无 | 国产午夜亚洲精品国产 | 成年人毛片网 | 国产91一区二区三 | 亚洲精品一区二区在线 | 少妇一晚| 丰满av无码久久不卡 | 国产一级a毛一级a看免费视频 | 国产黃色精品三級一区二区 | 免费无码中文a级毛片 | 日本精品视频 | 亚洲午夜无码极品久久 | 日本av一区二区三区视频 | 国产福利91精品一区 | 97久久天天 | 国产精品剧情久久久久 | 无码av天堂一区二区三区 | 日韩国产不卡一区二区三区 | 国产三级精品三级男人的天堂 | 人妻一级毛片免费看 | 国产成年人免费在线观看 | 91香蕉视频app下载最新版v2 | 91精品久久久久久久久久 | 国产成人啪精品午夜在线观看 | 亚洲国产精品成人综合 | 99久久er热在这里只有精品99 | 国产成人8x视频一区二区 | 日本理论午夜中文字幕 | 亚洲av成人精品一区二区三区 | 色综合久久88色综合天天 | 午夜理论在线观看视频无码 | 99久久人妻无码精品系列 | 伊人伊成久久人综合网 | 午夜成人app免费观看 | 日本国产日韩 | 亚洲午夜精品一级在线播放放 | 亚洲一区二区三区免费在线观看 | 在线a级毛| 少妇无套内谢久久久久 | 在线观看av网站永久免费观看 | 国产精品亚洲v毛片一区二区 | 国产三级精品三级在线专 | 欧美尤物精品国产中文 | 亚洲国产精品自在自线观看 | 欧洲亜洲中文日韩色图 | 中文字幕无码系列专区 | a级国产电影在线观看 | 国内精品久久久视频 | 人妻精品少妇二区 | 国产成人+综合亚洲+天堂 | 国产无码在线观看免费在 | 天天操天天操 | 久久成人国产精 | 亚洲av永久精品毛片天堂 | 日韩精品一 | 亚洲一卡二卡三卡四卡无卡麻豆 | 国产激情精品一区二区三区 | 禁片国产电影在 | 国产精品毛片久久久久久久 | a国产欧美亚洲国产有线 | 国产超碰人人做人人 | 精品久久久 | 国产一区二区成人久久919色 | 国内盗摄视频一区二区三区 | 国产二级一片内射视频插放 | 四虎永久在线精品免费 | 99精品国产在热久久无毒不卡 | 亚洲国产精品日韩av不卡在线 | 99在线精品免费视频九九视 | 色婷婷日韩精品一区二区麻豆 | 国产精品香蕉在线观看 | 日本国产欧美在线观看 | 在线看片福利无码网址 | 亚洲精品无码久久久久av麻豆 | 中文字幕色婷婷在线视频 | 亚洲av无码专区电影在线观看 | 韩国三级无码高在线观看 | 午夜福利伦伦电影理论片在线观看 | 国产av国片 | 午夜丰满少妇一级毛影院 | 亚洲精品高清国产 | 欧美丰满少妇xxxxx高潮 | 精品伊人久久大线蕉色 | 国产电影天天看在线播放 | а8天堂资源在线官网 | 亚洲日韩精品欧美一区二区一 | 国产精品国产三级国产a | 东京热久久无码av高潮喷 | 国产在线观看精品一区二区三 | 国产亚洲精品久久久久片小 | 国产成人无码精品一区在线观看 | 国产精品午夜理论片在线播放 | 欧美日韩一区二区三区在线观看 | 午夜影视网 | 精品伊人久久久大香线蕉天堂 | 国产欧美日韩精品尤物在线观看 | 成人动漫h在线观看 | 中日韩精品无码一区二区三区 | 天天爽夜夜爽人人爽一区二区 | 亚洲日韩精品看片无码 | 欧美无人区码 | 99精品久久久久久久久久综合 | 99久久综合精品五月天 | 在线精品国产一区二区三区88 | 欧美日产国产精品 | 亚洲一级片内射视正片 | 国产一级黄色 | 国产精品人妻久久ai换脸 | 99国产综合精品久久久久 | 精品国产福利第 | 国产成人精品综合久久久 | 精品人人妻人人澡人人爽人人 | 国产又滑又嫩又白 | 成人免费毛片一区二区三区 | 精品一区二区三区的国产在线观 | 91久久| 久久99九九99九九精品 | 日韩好片一区二区在线看 | 国产91av在线免费观看 | 少妇综合久久中文字幕 | 国产ts在线播放网站 | 成年在线网站免费观看无广告 | 日本aⅴ中文免费观看 | 国产成a人亚洲精v品无码樱花 | 国产免费第一区久久 | 欧美亚洲性色影视在线 | 97超在线视频免费 | 成a人片在线观看视频 | 色婷婷久久综合中文久久 | 国产精品国产三级国产an首页 | 高清一区二区三区尤物 | 午夜免费啪在线观看无码 | 桃色在线观看 | 99视频.com | 国产日韩久久久 | 在线a亚洲视频播放在 | 91久久亚洲精品国产 | 亚洲成av人片在线观看ww | 熟女大屁股白浆一区二区 | 午夜a级成人免费毛片 | 成人免费视频在线观看 | 自在自线亚洲а | 性欧美欧美巨大69 | 麻豆一区二区三区精品视频 | 日韩精品久久久毛片一区二区 | 久久福利资源网站免费看 | 91在线无码精品社区 | 国产色青青视频在线观看撒 | 精品人妻系列无码一区二区三区 | 99国产精品99 | 亚洲熟妇av一区二区三区 | av无码国产在线看免费网站 | 国产精品日韩无码一区二区 | 99国产在线 | 亚洲h成年动漫在线观看网站 | av不卡在线永久免费观看 | 国产成年 | 午夜无遮挡男女啪啪免费软件 | 国产黄色一级大片 | 亚洲欧美日韩综合一区二区 | 一区二区三区不卡在线 | 日韩av无码一区二区三区不卡 | 女人三级片电影一区二区区 | 亚洲中文字幕永久网站 | 亚洲精品中文字幕不卡在线 | 国产欧美日韩精品丝袜高跟鞋 | 韩国日本亚洲欧洲一区二区三区 | 国产精品亚洲а∨天堂免下 | 午夜婷婷成人 | 国产v片在线播放免费观 | 人人玩人人妻精品性色 | 国产黄色在线免费观看 | 国语对白农村老太婆bbw | 日本精品高清一区二区97伦理电影 | 亚洲精品午 | 91成人黄色视频在线观看 | 中文无码精品a∨在线观看不卡 | 成人免费播放视频777777 | 国产成人无码精品不卡 | 91啪在线观看国产在线 | 日韩毛片在 | 国产91av视频在线观看 | 国产视频一区二区 | 黄网站专区末成年美女 | 中文字幕丰满乱孑伦 | 人人揉人人爽五月天视频 | 无码人妻丰满熟妇片毛片 | 成全视频在线观看免费高清在线观看 | 91精品国产免费青青碰在线观 | 黄色影院| 婷婷久久亚洲综合国产 | 精品亚洲成av人在线观看 | 99久久综合精品国产 | 99久久免费精品国产72精品九九 | 国产成人综合亚洲精品777 | 91大神在线精品视频一区 | 国产一区二区美女专区 | 午夜视频免费观看 | 91无码人妻精品一区二区蜜桃 | 日韩欧美国产精品专区 | 精品一区二区高清免费观 | 亚洲中文字幕在线精品2025 | 亚洲成a人片在线观看国产 亚洲成a人片在线观看老师 | 精品亚洲成a人在线观看青青 | 麻豆成人91久久精品二区三区 | 在线亚洲视频播放在线观看 | 国产av无码精品色午夜 | 日韩无码av片亚洲成人精品网站 | 中文字幕乱码一区二区免费 | 国产免费趣味软件盘点:畅享高清 | 日韩成人精品二区 | 97精品久久久中文字幕免费 | 愉拍自拍一区首页 | 狠狠精品久久久无码中文字幕 | 亚洲最全av天在线观看 | 91视频大全 | 国产精品亚洲欧美—级久久精品 | 亚洲av纯肉无码精品网站 | 精品99精品在 | 无码人妻 | 久久99精品国 | 色综合天天综合网天 | 人人操人人摸97 | 国产午夜福利在线视频导航 | 日韩毛片在线 | 伊人亚洲| 精品国产无码大片在线看 | 日韩好片一区二区在线看 | 中文字av字幕在线观看老师 | 亚洲午夜国产精品无码老牛影视 | 精品无码一 | 亚洲成av人片一区二区密柚 | 亚洲精品国产第一综合99久久 | 日韩精品一区中文字幕在线 | 97精品久久天干天天蜜 | 中文字幕有码在线观看 | 国产很色很黄很大爽的视频 | 精品一区二区三区在线观看 | 国产在线观看91精品不卡 | 在线免费观看国产 | 欧美精品一区二区三区在线观看 | 国产人妖乱国产精品人妖 | 亚洲精品aa片在线观看 | 专区中文字幕视频专区 | 国产在线看片免费人 | 三級中文字幕電影大全 | 国产精品露脸国产对白 | 国产v亚洲v天堂无码网站 | 精品国产午夜福利在线观看蜜月 | 无码精品国产va在线观看dvd | 精品无人区一区二区三区 | 99久久久久久精品免费 | 91精品国产高清久久久久久91 | 日韩中文字幕无码一区二区三 | a片av一级在线播放观看免费 | 亚洲欧美大码a在线观看 | 区波多野结衣 | 91麻豆精品国产91久久久久久 | 91免费无码国产在线观看 | 国产在线精品观看免费观看 | 天天躁日日躁狠 | 国产又黄又大又粗的视频 | 婷婷国产成人亚洲日韩精品免费视 | 国产成年网站v片在线观看 国产成年无码av片在线 | 中文字幕亚洲天堂 | 午夜精品视频在线观看 | 国产帅男男gay网站视频 | 亚洲另类无码春色首页 | 国产精品一区二区久久宅男 | 99久久婷婷国产综合精品草原 | 国产精品毛片一区视频播 | 91福利视频合集 | 国语自产拍无码精品视 | 三级国产精品亚洲 | 日韩人妻无码一区二区三区综 | 日韩高清在线观看不卡一区二区 | 国产亚洲av片a区二区三区 | 亚洲无码精品在线播放 | 精品无码人妻一区二区三区不卡 | 国产日韩三级综 | 国产精品国产免费无码专区不 | 成人特级毛片www免费版 | 国产精品自产拍高潮在线观看 | 无码精品视频一区二区三区 | 精品女同一区二区三区免费站 | 精品无码av无码免费专区 | 国产小视频在线观看网站 | 国产无套粉嫩白浆在线观看 | 在线观看亚洲av日韩av | 国产又粗又猛又黄又爽无遮挡 | 精品一区二区久久久久久 | 精品国产在天天线在线 | 欧美一级夜爽爽爽在线播放 | 国产v亚洲v天堂无码网站 | 国产欧美精品区一区二区三区 | 午夜视频久久久久一区 | 99久久国产精麻豆 | av午夜福利精品一区 | 日韩福利| 97国产午夜精品一区二区 | 日韩欧美视频免费一区二区三区 | 国产精品厕所电影 | 亚洲欧美成人中文字幕在线 | 国产精品视频久久久 | 色综合蜜桃视频在线观看 | 国产精品欧美日韩区二区 | 亚洲国产成人精品女人 | 三上悠亚av | 国产对白一区视频 | 国产精品成人嫩草影院 | 国语av最新自产拍在线观看 | 91人成亚洲高清在线观看 | 亚洲av无码成人精品区天堂 | 国产在线播精品第三 | 久久99精品久久久久麻豆 | 香蕉久在线精品 | 国产精品网站在线观看免费传媒 | 国产成人精品a∨一区二区 国产成人精品aa毛片 | 97se狠狠狠狠狼亚洲综合网 | 亚洲国产一区二区久久 | 久久av秘一区二区三区水牛 | 亚洲国产欧美不卡在线 | 欧美精品一区二区三区91 | 日本不卡一区更新二区 | 亚洲国产精品电影人久久网站 | 国产一区二区视频不卡 | 国产噜噜噜噜久久久久久久久 | 国产农村 | 国产在线观看黄av免费 | 亚洲欧美高清在线精品一区二区 | 国产亚洲精品线观看 | 内射高潮享受视频在线观看 | 国产蜜桃一区二区三区在线观看 | 国产在线观看私人影院 | 亚洲综合无码中文字幕 | 国产91熟女一区二区三区 | 国产成人久久综合区 | 无码av专区 | 精品中文字幕一区二区三区四区 | 午夜福利视频免费看床戏激情 | 天堂无码人妻精品一区二区三区 | 精品无码成人网站久久久久久 | 无码精品一区二区三区在线 | 成全在线观看免费高清电视剧 | 欧美精品aⅴ在线视频 | 在线亚洲欧美日韩中文字幕一区 | 久久99精品久久久久久久不卡 | 精品91专区视频在线 | 国产极品白嫩精品 | 97蜜桃网站 | 国产欧美二区 | 精品国产综合久久久 | 国产一区二区三区不卡av | 69久久夜色精品国产69 | 成人性三级欧美在线观看 | 国产精品视频一区国模私拍 | 亚洲av不卡无码国产粉色 | 国产一区三区二区中文在线 | 午夜tv | 老司机免费视频福利0 | av剧情麻豆映画国产在线观看 | 91啪在线观看国产在线 | 波多野结衣av大高潮在线观看 | 香蕉久久国产av一区二区 | 97精品国产福利一区二区三区 | 精品伦精品一区二区三区视 | 国产日韩av免费无码一区二区 | 成年男女免费视频网站很黄 | 国产av一区二区三区最新精品 | 国产精品三级在线观看无码 | 日韩激情不卡一 | 九九热国产视频 | 99精品久久久久久久 | 超碰97总站中文字幕 | 99久久精品出品国产一区 | 天天影视人人综合日韩欧美mv | 中文字幕一区二区三 | 97精品国产97久久久久 | 久草国产精品视频 | 国产艹b破处色视频福利在线播放 | 国产麻豆91欧美一区二区 | 亚洲午夜精品成人毛片 | 成人蕾丝电影在线播放网站 | 国产高清无码一区三区二区 | 黄色网站哪里可以看呜呜呜 |