รวบรวม Code ต่างๆนานา ที่เคยพบเจอมาจากประสบการณ์

UNDERGROUND PROGRAMMER PRESENT

วันพฤหัสบดีที่ 31 สิงหาคม พ.ศ. 2560

SQL SERVER#8 System stored procedures part 1

Stored Procedure ชื่อนี้คุ้นหูอยู่นะ สรุปง่ายๆ ก็คือมันเป็นโปรแกรมย่อยตัวหนึ่งใน SQL Server นี้ละ

โดยสามารถรับค่าตัวแปร (Parameter) เข้าไปทำงานและแสดงออกมาเพื่อนำไปทำงานต่อไปตามที่ต้องการละนะ ซึ่งเจ้า Stored Procedure นี้ปัจจุบันก็ไม่ค่อยได้เห็นใครจะใช้มันเท่าไร เพราะในการเขียนโปรแกรมในสมัยปัจจุบัน (2016++) ก็จะมีพวก Framework ออกมามากมายที่ช่วยในการจัดการกับ ฐานข้อมูลละ เช่น  LINQ to SQL, LINQ to Entities, Entity Framework ต่างๆ ที่จะใช้ไวยากรณ์ของภาษานั้นๆ จัดการเลย

แต่การเขียน Stored Procedure นั้นก็จำเป็นมากหากเป็นการพัฒนาระบบใหญ่ ๆ ที่มีการติดต่อกับฐานข้อมูลหลายๆ ครั้งเพื่อนำมาคำนวณหรือกระทำการใดๆ ซึ่งแน่นอนว่าหากเป็นแบบนี้ก็จะทำให้ประสิทธิภาพของ Application นั้นลดลงอย่างแน่นอน ซึ่งทางเลือกหนึ่งที่ควรจะใช้ก็คือ ยกภาระความซ้ำซ้อนนี้ให้ Database จัดการแทนสะ โดยทางฝั่ง Application ก็แค่ส่งค่า Parameter เข้าไปแค่นั้นเอง

ในบทความนี้จะไม่สอนเกี่ยวกับการสร้าง, การทำงาน, การเรียกใช้ Stored Procedure (เพราะอันนี้คงหาศึกษาได้ตามโลกของ Internet หรือ หนังสือมากมาย) แต่จะพูดถึงเกี่ยวกับ System Stored Procedure ที่มีมาให้ใน SQL Server แทน เพราะคงมีหลายตัวที่ได้ใช้และจำเป็นต่อการใช้งานเกี่ยวกับการเขียนโปรแกรม และการจัดการฐานข้อมูล 😝😜😜

System Stored Procedure จะเป็นโปรแกรมย่อยๆ ที่จะมีมาให้ใช้งานและจัดการกันโดยจะแบ่งออกเป็นกลุ่มๆ ประกอบไปด้วย

  • Active Geo-Replication Stored Procedures
ใช้เพื่อจัดการกับค่า Geo-Replication ต่างๆใน Azure SQL Database (* Geo-Replication มันจะเป็นการกำหนดเกี่ยวกับการ Backup ข้อมูล)
  • Catalog Stored Procedures
อันนี้ก็จะใช้ดำเนินการเกี่ยวกับพวก ODBC และการจัดการเกี่ยวกับการเปลี่ยนแปลงตารางต้นแบบต่างๆ
  • Change Data Capture Stored Procedures
ใช้ในการเปิดปิด หรือรายงานเกี่ยวกับ Data Capture
  • Cursor Stored Procedures
ใช้ดำเนินการเกี่ยวกับการใช้งาน Cursor
  • Data Collector Stored Procedures
จะเป็นตัวที่ทำงานเกี่ยวกับรูปแบบชนิดข้อมูลที่เป็น collection
  • Database Engine Stored Procedures
ใช้เกี่ยวกับการบำรุงรักษาทั่วไปของ SQL Server Database Engine
  • Database Mail Stored Procedures (Transact-SQL)
ใช้สำหรับดำเนินการพวกอีเมล
  • Database Maintenance Plan Stored Procedures
อันนี้จะเป็นการตั้งค่าแผนการบำรุงรักษาเพื่อเพิ่มประสิทธิภาพให้กับฐานข้อมูล
  • Distributed Queries Stored Procedures
จะจัดการเกี่ยกับการกระจาย Query ทั้งหลาย
  • Filestream and FileTable Stored Procedures (Transact-SQL)
ใช้เพื่อกำหนดค่าและจัดการเกี่ยวกับ FILESTREAM และ FileTable
  • Firewall Rules Stored Procedures (Azure SQL Database)
ใช้เพื่อกำหนดค่าไฟร์วอลล์ Azure SQL Database
  • Full-Text Search Stored Procedures
ใช้จัดการเกี่ยวกับ Index การค้นหาข้อมูล
  • General Extended Stored Procedures
จะเป็นการกำหนดค่าการบำรุงรักษาจากภายนอก
  • Log Shipping Stored Procedures
ใช้ในการกำหนดค่า การปรับเปลี่ยน และการกำหนดค่าการจัดส่ง log ต่างๆ
  • Management Data Warehouse Stored Procedures (Transact-SQL)
ใช้ในการกำหนดค่า Data Warehouse ต่างๆ
  • OLE Automation Stored Procedures
เอาไว้เปิดการใช้งานอัตโนมัตสำหรับการใช้งาน T-SQL
  • Policy-Based Management Stored Procedures
ใช้ในการจัดการ Policy ต่างๆ
  • PolyBase stored procedures
เอาไว้จัดการเกี่ยวกับกลุ่ม PolyBase (เพิ่ม/ลบ)
  • Query Store Stored Procedures (Transact-SQL)
เอาไว้ปรับแต่งประสิทธิภาพ
  • Replication Stored Procedures
เอาไว้จัการ replication
  • Security Stored Procedures
เอาไว้จัดการเกี่ยวกับพวกความปลอดภัย
  • Snapshot Backup Stored Procedures
เอาไว้ลบไฟล์ข้อมูลสำรอง (File Snapshot)
  • Spatial Index Stored Procedures
เอาไว้วิเคราะห์และปรับปรุงประสิทธิภาพของ Index
  • SQL Server Agent Stored Procedures
เอาไว้ใช้เกี่ยวกับ SQL Server Agent เพื่อดำเนินการเกี่ยวกับกิจกรรมต่างๆ
  • SQL Server Profiler Stored Procedures
เอาไว้ใช้เกี่ยวกับ SQL Server Profiler เพื่อตรวจสอบประสิทธิภาพและกิจกรรม
  • Stretch Database Stored Procedures
ใช้ในการจัดการฐานข้อมูลแบบ Stretch
  • Temporal Tables Stored Procedures
เอไว้จัดการพวก Temporal Tables
  • XML Stored Procedures
ใช้สำหรับการจัดการข้อความพวก XML


นี้ก็จะเป็นกลุ่มของ System Stored Procedure ที่ได้ทำการแบ่งแยกเอาไว้ โดยในบทความนี้จะขอยกเพียงบางคำสั่งที่ได้ใช้งานบ่อยเท่านั้น คงนำมาไม่หมดนะ 😎😎  โดยแบ่งแยกตามกลุ่มๆ ไป

เอาละมาเริ่มกันเลย !!

1.กลุ่ม Catalog Stored Procedures
sp_column ไว้สำหรับดูรายละเอียดของข้อมูล Column ในตารางที่ได้กำหนด
รูปแบบ  exec sp_columns @table_name = N'ชื่อตาราง', @table_owner = N'ชื่อเจ้าของตาราง';
ตัวอย่าง

sp_databases สำหรับดูชื่อฐานข้อมูลทั้งหมดและขนาดจัดเก็บปัจจุบัน (หน่วยเป็น KB)
รูปแบบ exce sp_databases;
ตัวอย่าง

sp_fkeys สำหรับดู Foreign Key ว่าได้ทำการเชื่อมโยงกับตารางไหนบ้างและแสดงข้อมูลเกี่ยวกับ  FK
รูปแบบ exec sp_fkeys @pktable_name = N'ชื่อตาราง' ,@pktable_owner = N'ชื่อเจ้าของตาราง';
ตัวอย่าง
sp_pkeys สำหรับดูข้อมูล Primary Key ของตารางที่กำหนด
รูปแบบ exec sp_pkeys @table_name = N'ชื่อตาราง'  ,@table_owner = N'ชื่อเจ้าของตาราง';
ตัวอย่าง

sp_server_info เอาไว้แสดงค่ารายละเอียดต่างๆ ของฐานข้อมูล โดย attributes เป็นตัวบอกว่าต้องการจะดูอะไร ดังต่อไปนี้ (ยกตัวอย่างเฉพาะที่ใช้บ่อยๆ)

  • 1      DBMS Name
  • 2      DBMS Version
  • 10    Owner Term
  • 12    Max owner name length
  • 13    Table Term (จำนวนตัวอักษรสูงสุดที่สามารถตั้งชื่อตาราง)
  • 14    Max length name qualifier  table
  • 15    Column length (จำนวนตัวอักษรสูงสุดที่สามารถตั้งชื่อคอลัมท์)
  • 16    Specifies the user-defined names 
  • 500  ระบุ Version stored procedures ที่ใช้อยู่ปัจจุบัน    
รูปแบบ  exec sp_server_info @attribute_id=2;
ตัวอย่าง

sp_special_columns จะแสดงค่าของ column ที่ต้องไม่มีข้อมูลซ้ำกัน และมีผลกับการเชื่อมโยง
รูปแบบ  sp_special_columns @table_name = 'ชื่อตาราง',@table_owner = 'ชื่อเจ้าของตาราง';


ตัวอย่าง

sp_sproc_columns เอาไว้ตรวจดู Parameters ที่มีการรับ/ส่งค่า ใน Store Procedure
รูปแบบ   exec sp_sproc_columns  @procedure_name= 'ชื่อ procedure'  
                 ,@procedure_owner = 'ชื่อเจ้าของ procedure';
ตัวอย่าง



sp_statistics แสดงรายการ Indexes และสถิต ที่ได้จัดทำในตารางนั้นๆ
รูปแบบ exec sp_statistics ชื่อตาราง
ตัวอย่าง

sp_stored_procedures แสดงรายการ Stored_procedures ในฐานข้อมูล
รูปแบบ exec sp_stored_procedures @sp_name=N'ชื่อ procedure', @sp_owner=N'ชื่อเจ้าของ procedure' (หากต้องการแสดงรายการทังหมดก็ไม่ต้องกำหนดค่า parameter ก็ได้)
ตัวอย่าง

sp_table_privileges แสดงรายการสิทธิ์ของตาราง (เช่น INSERT, DELETE, UPDATE, SELECT, Reference) 
รูปแบบ exec sp_table_privileges @table_name='Cus%';
ตัวอย่าง ในตัวอย่างจะแสดงสิทธิ์การจัดการสำหรับตารางที่ขึ้นต้นด้วย Cus...

sp_tables แสดงรายการตาราง, View ในฐานข้อมูล
รูปแบบ exec sp_tables @table_owner=N'ชื่อเจ้าของ',@table_type="'table'"; --> view
ตัวอย่าง



ก็จบไปสำหรับ System Stored Procedure ในกลุ่มของ Catalog Stored Procedures ใน part ต่อไปก็จะพูดถึงในกลุ่มของ Database Engine Stored Procedures เพราะมีการใช้งานในกลุ่มนี้บ่อยๆ 😵😵😵😵

ไม่มีความคิดเห็น:

แสดงความคิดเห็น