ค้นหา Sqlpackage.exe บนเครื่องไคลเอนต์เพื่อติดตั้ง DACPAC

ฉันกำลังพัฒนาแอปพลิเคชัน .Net ที่จะปรับใช้ dacpac บนเครื่องไคลเอนต์ เพื่อจุดประสงค์นั้น ฉันต้องใช้ SqlPackage.exe เพื่อปรับใช้ dacpac ฉันต้องการเส้นทางที่แน่นอนของ SqlPackage.exe เพื่อให้แอปพลิเคชันของฉันทำงานโดยไม่คำนึงถึงการกำหนดค่าเครื่องของไคลเอนต์

คุณช่วยฉันให้บรรลุเป้าหมายนี้ได้ไหม

ขอบคุณ โยเกช


person Yogesh Irmal    schedule 16.05.2017    source แหล่งที่มา
comment
อีกทางเลือกหนึ่งสำหรับ sqlpackage คือ แพ็คเกจ Microsoft.SqlServer.Dac ซึ่งอนุญาตให้ คุณต้อง ปรับใช้ DACPAC แบบเป็นโปรแกรม   -  person Jeroen Mostert    schedule 17.05.2017
comment
นี่คือตัวเลือกที่ฉันเดาว่าฉันจะต้องพิจารณา ขอบคุณเจโรน   -  person Yogesh Irmal    schedule 17.05.2017
comment
ฉันรู้ว่าคำถามนี้เก่าไปหน่อย แต่เพียงเพื่อชี้ให้เห็นว่าแพ็คเกจ NuGet ที่แนะนำนั้นดูไม่เหมือนที่ได้รับการดูแล (หรือเคยได้รับการดูแลจริง ๆ ) มีเพียงสองเวอร์ชันเท่านั้นและล่าสุดมีอายุเกินห้าปีแล้ว   -  person jamesmus    schedule 30.10.2019


คำตอบ (3)


คุณสามารถติดตั้ง sqlpackage.exe ได้สองวิธี:

  • SSDT (เครื่องมือข้อมูลเซิร์ฟเวอร์ SQL): ตำแหน่งจะเป็น VS Install Directory\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\{SqlVersion}, VS ไดเรกทอรีการติดตั้ง: C:\Program Files (x86)\Microsoft Visual Studio {VsVersion}.0
  • SQL Server Management Studio (SSMS) และ Dac Framework MSI: C:\Program Files (x86)\Microsoft SQL Server\{SqlVersion}\Dac\bin

SqlVersion คือ 140 สำหรับ SQL Server 2017, 130 สำหรับ SQL Server 2016 เป็นต้น

VsVersion คือ 14 สำหรับ Visual Studio 2017

รายละเอียดเพิ่มเติมในคำถามนี้

person Dávid Molnár    schedule 17.05.2017
comment
ขอบคุณเดวิด จริงๆ แล้ว เรากำลังดำเนินการ sqlpackage.exe จากแบตช์ไฟล์ ดังนั้นเราจึงต้องการตำแหน่งที่แน่นอนของ sqlpackage.exe ในเครื่องไคลเอนต์ ลูกค้าอาจติดตั้งไว้ใน C: หรือ D: หรือไดรฟ์ใดก็ได้ เราไม่สามารถรักษาเส้นทางให้คงที่ได้ - person Yogesh Irmal; 17.05.2017
comment
จริงๆ แล้ว ฉันจะคัดลอกไฟล์ sqlpackage.exe และการอ้างอิงทั้งหมดแล้วปรับใช้กับไฟล์แบตช์ของฉัน ลูกค้าของฉันจึงไม่ต้องติดตั้งอะไร ฉันไม่ต้องค้นหาเส้นทางที่ถูกต้อง และทุกคนก็มีความสุข :) - person Dávid Molnár; 17.05.2017
comment
แต่ฉันเดาว่าเราไม่ได้รับอนุญาตให้แจกจ่ายชุดประกอบของ Microsoft อีกครั้งและจัดส่งซึ่งเป็นส่วนหนึ่งของผลิตภัณฑ์ของเราให้กับลูกค้า - person Yogesh Irmal; 17.05.2017
comment
อีกทางเลือกหนึ่งคือการทดสอบเส้นทางที่เป็นไปได้ทั้งหมด ในแบตช์สคริปต์ do: if Exists (path) for c:\..., d:\.., e:\.. ฯลฯ อาจจะไม่เข้าใจผิด แต่สามารถใช้งานได้ - person Dávid Molnár; 17.05.2017
comment
ใช่ว่าจะได้ผล .. Jeroen เพิ่งแนะนำอีกหนึ่งตัวเลือกแทน sqlpackage.exe ฉันจะลองสิ่งนี้หากไม่ได้ผล ฉันจะเหลือเพียงตัวเลือกเดียวและทดสอบเส้นทางที่เป็นไปได้ทั้งหมด - person Yogesh Irmal; 17.05.2017
comment
Data-Tier Application Framework สามารถแจกจ่ายต่อได้ ดูรายละเอียดข้อกำหนดสิทธิ์การใช้งาน แต่ภาพรวมคือคุณได้รับอนุญาตให้จัดส่งพร้อมกับแอปของคุณและใช้เพื่อดำเนินการฐานข้อมูล - person Steven Green; 18.05.2017
comment
หากเป็นกรณีนี้ก็เยี่ยมมาก .. ขอบคุณ Steven สำหรับความช่วยเหลือ - person Yogesh Irmal; 18.05.2017
comment
ฉันคิดว่า 140 ใช้สำหรับ SQL Server 2017 2016 สอดคล้องกับ 130 - person nawfal; 02.12.2017
comment
สิ่งนี้ไม่ทำงาน ฉันได้ติดตั้ง SSDT โดยเปิดใช้งานตัวเลือกทั้งหมดแล้ว แต่ไม่มีโฟลเดอร์ส่วนขยายอยู่ที่นั่น แก้ไข: ไดเร็กทอรีการติดตั้ง VS2017 มีการเปลี่ยนแปลง ซึ่งไม่มีการบันทึกไว้ในที่ใดที่ฉันสามารถหาได้ - ตอนนี้อยู่ที่ C:\Program Files (x86)\Microsoft Visual Studio\2017 - person Tom W; 07.12.2017
comment
ใช้ vswhere.exe เพื่อช่วยค้นหาอินสแตนซ์ Visual Studio สิ่งนี้สามารถช่วยคุณค้นหา sqlpackage.exe https://github.com/Microsoft/vswhere - person DaleyKD; 27.12.2017

หากต้องการค้นหา sqlpackage โดยทางโปรแกรม คุณสามารถใช้ ไลบรารี PowerShell TaskModuleSqlUtility ได้ เรียกใช้ Invoke-DacpacDeployment จากสคริปต์ PowerShell (ขออภัยไม่ใช่ C#) หรือใช้ฟังก์ชัน Get-SqlPackageOnTargetMachine สำหรับเส้นทาง sqlpackage.exe

ค้นหาการทดสอบใน github เพื่อดูตัวอย่าง

person nawfal    schedule 10.08.2018

คุณสามารถดาวน์โหลดได้จากไซต์ microsoft doc

https://docs.microsoft.com/en-us/sql/tools/sqlpackage-download?view=sql-server-ver15&viewFallbackFrom=sql-server-ver17

และตรวจสอบเวอร์ชันของ sql ของคุณและรับคำแนะนำที่ถูกต้อง

person Turbot    schedule 20.11.2020