คำถามติดแท็ก scripting

สำหรับคำถามเกี่ยวกับการสร้างหรือใช้สคริปต์ภาษาตัวอย่างเช่นการเขียนสคริปต์นิยามอ็อบเจ็กต์ฐานข้อมูล

5
SQL Server 2012: สร้างสคริปต์จากบรรทัดคำสั่ง
ฉันใช้ SQL Server 2012 Studio การจัดการเซิร์ฟเวอร์ SQL มีตัวเลือกให้คลิกขวาบนฐานข้อมูลจากนั้นเลือกงานและสร้างสคริปต์ มีวิธีการที่ทำให้โดยอัตโนมัติผ่านทางบรรทัดคำสั่งอย่างใด? ฉันต้องการสร้างสคริปต์ที่มีสคีมาและข้อมูลของฐานข้อมูลทั้งหมด เครื่องมือที่ชอบScriptDBและsqlpubwiz.exeดูเหมือนจะตั้งเป้าหมาย SQL Server 2005 แล้ว SQL Server 2012 ล่ะ?

3
ทางเลือกอื่นในการต่อสตริงหรือดำเนินการตามขั้นตอนเพื่อป้องกันการทำซ้ำรหัสแบบสอบถาม SQL?
คำเตือน: โปรดอดทนกับฉันในฐานะคนที่ใช้ฐานข้อมูลเพียงเล็กน้อยในเวลาทำงานของเขา (ส่วนใหญ่ฉันใช้การเขียนโปรแกรม C ++ ในงานของฉัน แต่ทุกเดือนที่แปลกฉันต้องค้นหา / แก้ไข / เพิ่มบางสิ่งในฐานข้อมูล Oracle) ฉันจำเป็นต้องเขียนแบบสอบถาม SQL ที่ซับซ้อนซ้ำ ๆ ทั้งสำหรับคิวรีแบบเฉพาะกิจและแบบสอบถามที่มีอยู่ในแอปพลิเคชัน การเขียนสิ่งที่น่ารังเกียจในภาษาโปรแกรมแบบดั้งเดิมจะทำให้คุณประสบปัญหาอย่างหนัก แต่ฉัน ( I ) ยังไม่สามารถหาเทคนิคที่เหมาะสมในการป้องกันการทำซ้ำรหัสแบบสอบถาม SQL แก้ไข: 1 ผมอยากจะขอบคุณ answerers ที่ให้การปรับปรุงที่ดีในการเดิมของฉันตัวอย่างเช่น อย่างไรก็ตามคำถามนี้ไม่เกี่ยวกับตัวอย่างของฉัน มันเกี่ยวกับการทำซ้ำในแบบสอบถาม SQL เป็นเช่นนี้คำตอบ ( JackP , ลีห์ ) เพื่อให้ห่างไกลจะได้งานที่ดีของการแสดงให้เห็นว่าคุณสามารถลด repetitiveness โดยการเขียนคำสั่งที่ดีกว่า อย่างไรก็ตามแม้แล้วคุณเผชิญ repetitiveness บางอย่างที่เห็นได้ชัดว่าไม่สามารถเอาออก: นี่เสมอ nagged ฉันกับ SQL ในภาษาการเขียนโปรแกรม "ดั้งเดิม" …

3
วิธีง่ายๆในการตรวจสอบการเชื่อมต่อกับ SQL Server จากไคลเอนต์
สำหรับวัตถุประสงค์ในการแก้ไขปัญหาฉันต้องการตรวจสอบว่าไคลเอ็นต์สามารถเชื่อมต่อกับอินสแตนซ์ของ SQL Server ได้หรือไม่โดยไม่ขึ้นอยู่กับแอปพลิเคชันที่ไม่สามารถเชื่อมต่อกับ SQL Server ได้ มีวิธีที่ง่าย (หมายความว่าไม่ต้องติดตั้งซอฟต์แวร์ของ บริษัท อื่น) เพื่อทำสิ่งนี้โดยใช้เครื่องมือระบบเริ่มต้นของ Windows หรือไม่ บางทีใช้สคริปต์หรือแอปพลิเคชันเครือข่าย

6
Redgate SQL เปรียบเทียบกับโครงการฐานข้อมูลพรีเมียม / Ultimate ของ Visual Studio 2010
ฉันกำลังใช้Visual Studio Professional Editionซึ่งมีโครงการฐานข้อมูลเป็นแม่แบบโครงการ แต่บางส่วนของคุณลักษณะของมันจะไม่สามารถใช้ได้เช่นเครื่องมือ Schema เปรียบเทียบ การเปรียบเทียบสคีและฐานข้อมูลการปรับปรุงสคริปต์รุ่นนี้ใช้ได้เฉพาะในภาพรุ่น Studio 2010 พรีเมี่ยม / ดีที่สุด แต่การเปรียบเทียบสกีมาและการอัปเดตคุณลักษณะการสร้างสคริปต์ใน Visual Studio มีความสมบูรณ์เท่ากับในเครื่องมือ Redgate SQL Compareหรือไม่ (ฉันไม่ได้ใช้ด้วย) ฉันไม่ได้จัดการเพื่อค้นหารายการเปรียบเทียบคุณสมบัติ ใครบ้างที่ใช้ทั้งคู่ช่วยกันทำให้ชัดเจนขึ้นได้ไหม

1
ข้อความค้นหาที่ผู้ใช้แบ่งปัน: ไดนามิก SQL กับ SQLCMD
ฉันต้องรีแฟคเตอร์และจัดทำเอกสารfoo.sqlแบบสอบถามจำนวนหนึ่งซึ่งจะใช้ร่วมกันโดยทีมสนับสนุนด้านเทคนิคของ DB (สำหรับการกำหนดค่าลูกค้าและสิ่งต่างๆเช่นนั้น) มีตั๋วหลายประเภทที่มาเป็นประจำที่ลูกค้าแต่ละรายมีเซิร์ฟเวอร์และฐานข้อมูลของตัวเอง แต่ไม่เช่นนั้นสคีมาจะเหมือนกันทั่วกระดาน กระบวนงานที่เก็บไว้ไม่ใช่ตัวเลือกในเวลาปัจจุบัน ฉันกำลังถกเถียงกันว่าจะใช้ไดนามิกหรือ SQLCMD ฉันไม่ได้ใช้อะไรมากมายเพราะฉันค่อนข้างใหม่ที่ SQL Server การสคริปต์ SQLCMD ฉันรู้สึกว่า "ดู" สะอาดกว่าสำหรับฉันและง่ายต่อการอ่านและเปลี่ยนแปลงการสืบค้นเล็กน้อยตามต้องการ แต่ยังบังคับให้ผู้ใช้เปิดใช้งานโหมด SQLCMD แบบไดนามิกนั้นยากกว่าเนื่องจากการเน้นไวยากรณ์เสียไปเนื่องจากการสืบค้นที่เขียนโดยใช้การจัดการสตริง สิ่งเหล่านี้กำลังถูกแก้ไขและรันโดยใช้ Management Studio 2012, SQL เวอร์ชัน 2008R2 อะไรคือข้อดี / ข้อเสียของวิธีใดวิธีหนึ่งหรือ SQL Server "วิธีปฏิบัติที่ดีที่สุด" บางวิธีในวิธีหนึ่งหรือวิธีอื่น เป็นหนึ่งในนั้น "ปลอดภัย" กว่าอีกหรือไม่ ตัวอย่างแบบไดนามิก: declare @ServerName varchar(50) = 'REDACTED'; declare @DatabaseName varchar(50) = 'REDACTED'; declare @OrderIdsSeparatedByCommas varchar(max) …

3
สคริปท์ Oracle DDL ในรูปแบบอัตโนมัติ
นักพัฒนา Oracle SQL สามารถส่งออก DDL ผ่านทางTools -> Database Export...นี้ทำงานได้ดีมาก แต่ต้องการการแทรกแซงด้วยตนเอง ฉันรู้DBMS_METADATA.get_ddl()แต่พบว่าการส่งออกไม่สมบูรณ์ ฉันพบปัญหาที่DBMS_METADATADDL ที่ส่งออกไม่สามารถใช้งานได้โดยไม่ต้องแก้ไขปัญหาเช่นแบ่งในช่วงกลางของคำหลักและแย่กว่านั้น อย่างไรก็ตามหากใครรู้วิธีการส่งออก DDL ผ่านDMBS_METADATAสิ่งที่สามารถทำงานได้โดยไม่ต้องแก้ไขด้วยตนเองนั่นก็เป็นทางออกที่ดีเช่นกัน โดยทั่วไปฉันกำลังมองหาวิธีอัตโนมัติ / สคริปต์เพื่อส่งออก DDL เหมือนกับสิ่งที่ส่งออกผ่านทางคู่มือ ฉันจะทำสิ่งนั้นได้อย่างไร

1
SQL Server / T-SQL รองรับความต่อเนื่องของบรรทัดเพื่อแยกสตริงที่ยาวหรือไม่?
บางครั้งฉันมีสคริปต์ SQL ที่มีอย่างน้อยหนึ่งสตริงที่ยาวเป็นพิเศษ (บางครั้งก็ยิ่งยาว) โดยทั่วไปสิ่งเหล่านี้เป็นVARBINARYตัวอักษร / ค่าคงที่ที่เป็นตัวแทนของไฟล์ / แอสเซมบลี แต่บางครั้งพวกเขาก็เป็นข้อความ ปัญหาหลักของสายอักขระที่ยาวมาก ๆ คือตัวแก้ไขข้อความบางตัวไม่สามารถจัดการได้ทั้งหมด ตัวอย่างเช่นฉันมีVARBINARYตัวอักษรที่ฉันใช้ในCREATE ASSEMBLY [AssemblyName] FROM 0x....คำสั่งและแอสเซมบลีตัวเองมีขนาดเพียง 1 MB ซึ่งเท่ากับเพียง 2 ล้านอักขระในไฟล์ข้อความเนื่องจากแต่ละไบต์ต้องการอักขระสองตัวที่จะแสดงในรูปแบบเลขฐานสิบหก (เช่น0x1F= a 1และ an F) SQL Server Management Studio (SSMS) จัดการได้ไม่ดีและค้างนานหลายวินาทีในขณะที่ฉันพยายามเลื่อนข้ามบรรทัดนั้น และในความเป็นจริงแล้วบางเวอร์ชั่น (ไม่แน่ใจว่ายังคงเกิดขึ้น) จะแสดงคำเตือนเกี่ยวกับบรรทัดยาวเมื่อเปิดสคริปต์ที่มีอย่างน้อยหนึ่งบรรทัดในระยะเวลาที่กำหนด ปัญหาที่สองคือมันซับซ้อนการจัดรูปแบบเมื่อใช้ในการแก้ไขโดยไม่ต้องเปิดใช้งานการตัดคำหรือโพสต์ออนไลน์ ปัญหาที่นี่คือตัวเลื่อนสำหรับแถบเลื่อนแนวนอนแคบมากและเคลื่อนย้ายได้แม้เพียงเล็กน้อยก็จะเลื่อนข้อความที่ไม่ยาวมากออกไปให้พ้น ตอนนี้ T-SQL จะไม่ยกเลิกคำสั่งด้วยบรรทัดใหม่หรือแม้แต่เซมิโคลอน (แม้ว่าเซมิโคลอนนั้นจะเป็นที่ต้องการ / แนะนำโดยเริ่มจาก SQL Server 2005) ดังนั้นเนื่องจาก SQL …

4
ปล่อยข้อ จำกัด (ดัชนี) บนคอลัมน์
ฉันจะแก้ไขประเภทในตารางที่มีดัชนีอยู่ได้อย่างไร ฉันพยายามที่จะแก้ไขคอลัมน์ในตารางว่างเปล่าเพื่อแก้ไขประเภทจากวันที่เป็น varchar (15) และมีข้อผิดพลาดที่บอกว่ามีการพึ่งพาคอลัมน์ (ซึ่งกลายเป็นดัชนี) ฉันสามารถไปที่จุดนี้ได้อย่างง่ายดายด้วยการคลิกขวาที่ดัชนีและวางสคริปต์ แต่ฉันจำเป็นต้องทำสิ่งนี้บนเซิร์ฟเวอร์อื่น ๆ ที่ฉันจะไม่สามารถเข้าถึงชื่อดัชนีได้ มีวิธีที่ฉันสามารถสร้างสคริปต์ที่จะวางดัชนีใด ๆ ให้ฉันทำประเภทข้อมูลที่เปลี่ยนแปลงในคอลัมน์แล้วอ่านดัชนีหรือไม่ ขอบคุณ!

5
ฉันจะตรวจพบโพรซีเดอร์ที่เก็บที่เสียหายหลังจากการเปลี่ยนแปลงสกีมา
ฉันได้แก้ไขตารางกลางในฐานข้อมูลของฉันและ sp_depends ส่งคืนผลลัพธ์หลายร้อยรายการอย่างแท้จริงและฉันกังวลว่าบางขั้นตอนการจัดเก็บอาจไม่ได้รวบรวมอีกต่อไปหลังจากการเปลี่ยนแปลงของฉัน การตรวจสอบหนึ่งโพรซีเดอร์ที่เก็บไว้นั้นง่ายมาก (ฉันเพิ่งรันสคริปต์แก้ไขและดูว่าการดำเนินการสำเร็จหรือไม่) แต่การทำอย่างนั้นกับ 100 โพรซีเดอร์นั้นค่อนข้างยุ่งยาก ฉันรู้ว่าฉันสามารถใช้สคริปต์เช่นนี้เพื่อรวบรวมวัตถุทั้งหมดของฐานข้อมูลของฉันได้ แต่การดำเนินการจริงจะเกิดขึ้นในครั้งต่อไปที่มีการเรียกใช้กระบวนงานที่เก็บไว้ไม่ใช่ทันทีดังนั้นจึงไม่เหมาะสมในกรณีของฉัน ฉันยังคิดว่าฉันสามารถลบโพรซีเดอร์ที่เก็บไว้ทั้งหมดและปรับฐานข้อมูลของฉันใหม่ด้วยระบบควบคุมแหล่งที่มาของฉัน แต่ตัวเลือกนั้นถึงแม้ว่าจะใช้งานได้จริง มีวิธีที่ดีกว่าในการทำเช่นนี้? ฉันใช้ SQLServer 2008 R2 และสคริปต์ฐานข้อมูลของฉันถูกเก็บไว้ในโครงการฐานข้อมูล VS 2008 เพื่อความกระจ่างแจ้งฉันไม่ได้ขอแนะนำให้ใช้วิธีทดสอบรหัสนี้เพียงอย่างเดียว เหมือนกับใน c # คุณตรวจพบข้อผิดพลาดทางไวยากรณ์ทันทีในไฟล์ที่ขึ้นต่อกันอื่น ๆ ในขณะที่คุณโค้ด (และจากนั้นใช้กลยุทธ์อื่น ๆ เพื่อทดสอบเช่นการทดสอบหน่วยซึ่งมักจะมีขนาดของคำสั่งช้าลง) ข้อผิดพลาดในไม่กี่วินาทีแทนที่จะต้องทำการทดสอบการทำงานเต็มรูปแบบซึ่งโดยทั่วไปอาจใช้เวลาสองสามชั่วโมงกว่าจะเสร็จสมบูรณ์

2
วิธีสคริปต์สิทธิ์ทั้งหมดบนสคีมา
สตูดิโอการจัดการ SQL ช่วยให้การสร้างสคริปต์สำหรับวัตถุฐานข้อมูลทั้งหมด แต่ฉันไม่สามารถหาวิธีการอย่างถูกต้องสคริปต์สคีมาหรือผู้ใช้ สิทธิ์ของผู้ใช้บนสคีมาไม่รวมอยู่ในสคริปต์ที่สร้างขึ้น ฉันทำอะไรผิดพลาดหรือเป็น MSFT ของเธอที่เลอะเทอะเล็กน้อย?

1
การเรียกใช้งานสคริปต์ TSQL ที่สร้างจาก SSMS ใน SQLCMD ล้มเหลวในการพูด
ฉันกำลังพยายามปรับใช้ฐานข้อมูลกับเครื่องโดยการเรียกใช้งานสคริปต์ที่สร้างขึ้นโดยเครื่องมือ "สร้างสคริปต์" ใน SQL Server Management Studio นี่คือคำสั่งที่ฉันออก: sqlcmd -S LOCALHOST\sqlexpress -I -U user -P ******** -i C:\Rollouts\NI-9-25-2012_10-42-AM\Rollout.sql > rolloutlog.txt ฉันได้รับข้อผิดพลาดเช่นนี้: Sqlcmd: ข้อผิดพลาด: ข้อผิดพลาดทางไวยากรณ์ที่บรรทัด 39488 ใกล้กับคำสั่ง '' 'ในไฟล์' C: \ Rollouts \ NI-9-25-2012_10-42-AM \ Rollout.sql ' เมื่อฉันดูบรรทัดนี้ด้วยโปรแกรมแก้ไขข้อความสัญญาณทั้งหมดชี้ไปที่ปัญหาด้วยเครื่องหมายคำพูด บรรทัดคำถามมีลักษณะดังนี้: $ ( '' แมวเมนูใหม่. '') slideDown ( '' ช้า ''). มีสวิตช์ที่ฉันควรเรียกใช้งานหรือสร้างสคริปต์ด้วยเพื่อสนับสนุนเครื่องหมายคำพูดภายในสคริปต์หรือไม่

1
SQL * Plus, @ และพา ธ สัมพัทธ์
อย่างใดดูเหมือนว่า SQL * Plus (อย่างน้อยบน Windows) ไม่สามารถค้นหาสคริปต์ด้วยเส้นทางสัมพัทธ์เมื่อเรียกด้วย@@และเมื่อเส้นทางเริ่มต้นด้วยจุดเดียวหรือสองครั้ง ตัวอย่างเช่นภายใต้x:\some\whereฉันมีโครงสร้างไดเรกทอรีต่อไปนี้: script.sql main-dir\main-sub-dir call-script.sql script.sql นั่นคือ: สองscript.sqlสถานที่ต่างกัน เนื้อหาของscript.sqlอันเดอร์ภายใต้x:\some\whereนั้นเรียบง่าย prompt SCRIPT root ในขณะที่script.sqlเนื้อหาอื่น ๆคือ prompt SCRIPT main-dir/main-subdir call-script.sql อ่าน @@script.sql @ script.sql ผลผลิตที่คาดหวัง ถ้าฉันเริ่ม SQL * Plus จากx:\some\whereนั้นให้ทำ @main-dir/main-sub-dir/call-scripts ผลลัพธ์จะเป็น SCRIPT main-dir/main-subdir SCRIPT root สิ่งนี้คาดว่าจะเกิดขึ้นเนื่องจากสิ่งที่@ควรจะค้นหาพา ธ จากจุดเริ่มต้นของ SQL * Plus และ@@ควรจะค้นหาพา ธ จากไดเรกทอรีของสคริปต์ที่มี ผลลัพธ์ที่ไม่คาดคิด …

2
มีการรวบรวมสคริปต์ PowerShell ใด ๆ ที่ช่วยงานบำรุงรักษา SQL Server หรือไม่
ฉันกำลังศึกษา PowerShell และฉันได้รับอย่างช้า ๆ ในการทำงาน DBA แบบวันต่อวัน จนถึงตอนนี้ฉันได้เห็นสคริปต์ PowerShell ที่ไม่ได้เชื่อมต่อสำหรับกิจกรรมการดูแลระบบที่แตกต่างกันจำนวนมาก สิ่งที่ฉันต้องการทราบคือมีคอลเลกชันหรือพื้นที่เก็บข้อมูลสคริปต์อย่างเป็นทางการ (หรือที่รู้จัก) PowerShell ที่ผู้คนมักจะไปที่สคริปต์ SQL Server PowerShell สำหรับกิจกรรม DBA ทั่วไป (เช่นสคริปต์ T-SQL ของ Ola Hallengren)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.