ผู้ดูแลฐานข้อมูล

ถามตอบสำหรับผู้เชี่ยวชาญด้านฐานข้อมูลที่ต้องการพัฒนาทักษะฐานข้อมูลและเรียนรู้จากผู้อื่นในชุมชน

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

2
PostgreSQL: ไม่เปลี่ยนรูปเปลี่ยนแปลงได้เสถียร
ฉันไม่ชัดเจนเกี่ยวกับความหมายที่แท้จริงในคำจำกัดความของฟังก์ชัน IMMUTABLE, VOLATILE และ STABLE ฉันอ่านเอกสารโดยเฉพาะคำจำกัดความของแต่ละคำ เปลี่ยนรูปแสดงให้เห็นว่าฟังก์ชั่นไม่สามารถแก้ไขฐานข้อมูลและ เสมอกลับผลเดียวกันเมื่อได้รับค่าอาร์กิวเมนต์เดียวกัน ; นั่นคือมันไม่ทำการค้นหาฐานข้อมูลหรือใช้ข้อมูลที่ไม่ได้อยู่ในรายการอาร์กิวเมนต์โดยตรง หากมีการกำหนดตัวเลือกนี้การเรียกฟังก์ชันใด ๆ ที่มีอาร์กิวเมนต์คงที่ทั้งหมดสามารถแทนที่ด้วยค่าฟังก์ชันได้ทันที STABLE บ่งชี้ว่าฟังก์ชั่นไม่สามารถแก้ไขฐานข้อมูลและภายในการสแกนตารางเดียวมันจะส่งคืนผลลัพธ์เดียวกันสำหรับค่าอาร์กิวเมนต์เดียวกันแต่ผลลัพธ์นั้นสามารถเปลี่ยนแปลงได้ตลอดทั้งคำสั่ง SQL นี่คือการเลือกที่เหมาะสมสำหรับฟังก์ชั่นที่ผลลัพธ์ขึ้นอยู่กับการค้นหาฐานข้อมูลตัวแปรพารามิเตอร์ (เช่นเขตเวลาปัจจุบัน) ฯลฯ (ไม่เหมาะสมสำหรับทริกเกอร์ AFTER ที่ต้องการแถวการสืบค้นที่แก้ไขโดยคำสั่งปัจจุบัน) โปรดทราบว่า ฟังก์ชันตระกูล current_timestamp มีคุณสมบัติว่าเสถียรเนื่องจากค่าของมันไม่เปลี่ยนแปลงภายในธุรกรรม VOLATILE บ่งชี้ว่าค่าฟังก์ชั่นสามารถเปลี่ยนแปลงได้แม้ในการสแกนตารางเดียวดังนั้นจึงไม่มีการปรับให้เหมาะสม ฟังก์ชันฐานข้อมูลค่อนข้างน้อยมีความผันผวนในแง่นี้ ตัวอย่างบางส่วนเป็นแบบสุ่ม (), currval (), timeofday () แต่โปรดทราบว่าฟังก์ชั่นใด ๆ ที่มีผลข้างเคียงจะต้องจำแนกความผันผวนแม้ว่าผลที่ได้นั้นจะสามารถคาดเดาได้อย่างชัดเจนเพื่อป้องกันการโทรออก ตัวอย่างคือ setval () ความสับสนของฉันมาพร้อมกับเงื่อนไขสำหรับ IMMUTABLE และเสถียรที่ฟังก์ชันALWAYSหรือCONSISTENTLYส่งคืนผลลัพธ์เดียวกันโดยให้อาร์กิวเมนต์เดียวกัน นิยาม IMMUTABLE ระบุว่าฟังก์ชันไม่ได้ทำการค้นหาฐานข้อมูลหรือใช้ข้อมูลที่ไม่ได้นำเสนอโดยตรงในรายการอาร์กิวเมนต์ ดังนั้นสำหรับฉันนั่นหมายถึงฟังก์ชั่นดังกล่าวถูกใช้เพื่อจัดการข้อมูลที่ได้รับจากลูกค้าและไม่ควรมีคำสั่ง SELECT ... …

1
PostgreSQL: ข้อผิดพลาด SSL SYSCALL: ตรวจพบ EOF
ก่อนอื่นฉันค้นหาและพบหลายกระทู้ที่เกี่ยวข้องกับข้อผิดพลาดนี้และส่วนใหญ่ชี้ไปที่ปัญหา RAM หรือปัญหา SSL ฉันพยายามเอาชนะความเป็นไปได้ SSL โดยการเพิ่ม sslmode = ปิดใช้งานในบรรทัดคำสั่ง: psql -U waypoint -d waypoint -W -c "alter table telemetria_data.historico alter clase type smallint, alter valor type real[], alter power type smallint, alter voltaje type real;" -h localhost -v sslmode=disable แต่ข้อความเดียวกันปรากฏ: SSL SYSCALL error: EOF detected connection to server was …

1
การเปรียบเทียบประสิทธิภาพระหว่างการใช้ฟังก์ชั่นเข้าร่วมและหน้าต่างเพื่อรับค่านำและระยะเวลาล่าช้า
ผมมีตารางที่มีแถว 20M และแต่ละแถวมี 3 คอลัมน์: time, และid valueสำหรับแต่ละidและtimeมีvalueสถานะ ฉันต้องการทราบว่านำและล่าช้าค่าของบางอย่างสำหรับการที่เฉพาะเจาะจงtimeid ฉันใช้สองวิธีเพื่อให้ได้สิ่งนี้ วิธีการหนึ่งคือการใช้เข้าร่วมและอีกวิธีหนึ่งคือการใช้ฟังก์ชั่นหน้าต่างนำ / ล่าช้ากับดัชนีคลัสเตอร์บนและtimeid ฉันเปรียบเทียบประสิทธิภาพของสองวิธีนี้ตามเวลาดำเนินการ วิธีการเข้าร่วมใช้เวลา 16.3 วินาทีและวิธีฟังก์ชั่นหน้าต่างใช้เวลา 20 วินาทีโดยไม่รวมเวลาในการสร้างดัชนี สิ่งนี้ทำให้ฉันประหลาดใจเพราะฟังก์ชั่นหน้าต่างดูเหมือนจะก้าวหน้าในขณะที่วิธีการเข้าร่วมนั้นดุร้าย นี่คือรหัสสำหรับสองวิธี: สร้างดัชนี create clustered index id_time on tab1 (id,time) เข้าร่วมวิธีการ select a1.id,a1.time a1.value as value, b1.value as value_lag, c1.value as value_lead into tab2 from tab1 a1 left join tab1 b1 …

6
ไม่สามารถดำเนินการต่อได้เนื่องจากเซสชันอยู่ในสถานะ kill ในขณะที่สร้างดัชนีคลัสเตอร์
ฉันได้รับข้อผิดพลาดต่อไปนี้ขณะที่พยายามสร้างดัชนีคลัสเตอร์ คำสั่งถูกยกเลิก ข่าวสารเกี่ยวกับ 596 ระดับ 21 สถานะ 1 บรรทัด 0 ไม่สามารถดำเนินการต่อได้เนื่องจากเซสชันอยู่ในสถานะ kill ข่าวสารเกี่ยวกับ 0 ระดับ 20 สถานะ 0, บรรทัด 0 ข้อผิดพลาดร้ายแรงที่เกิดขึ้นกับคำสั่งปัจจุบัน ควรยกเลิกผลลัพธ์หากมี ดัชนีคือ: BEGIN TRANSACTION SET QUOTED_IDENTIFIER ON SET ARITHABORT ON SET NUMERIC_ROUNDABORT OFF SET CONCAT_NULL_YIELDS_NULL ON SET ANSI_NULLS ON SET ANSI_PADDING ON SET ANSI_WARNINGS ON COMMIT BEGIN TRANSACTION GO …

1
วิธีรับประวัติการสืบค้นที่ดำเนินการโดยใช้ชื่อผู้ใช้ใน SQL
ฉันสามารถเรียกใช้คิวรีได้โดยใช้: SELECT deqs.last_execution_time AS [Time] ,dest.TEXT AS [Query] FROM sys.dm_exec_query_stats AS deqs CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest ORDER BY deqs.last_execution_time DESC แต่ฉันกำลังมองหาusernameคอลัมน์ที่ดำเนินการค้นหาเหล่านี้ด้วย

1
การสร้างข้อ จำกัด ที่ไม่ซ้ำกันในคอลัมน์ Postgres ลบความจำเป็นในการจัดทำดัชนีหรือไม่
การสร้างข้อ จำกัด ที่ไม่ซ้ำกันในคอลัมน์ Postgres ลบความจำเป็นในการจัดทำดัชนีหรือไม่ ฉันคาดหวังว่าดัชนีจำเป็นสำหรับการรักษาข้อ จำกัด ได้อย่างมีประสิทธิภาพโดยอัตโนมัติ

1
ทำไม PL / Python ไม่น่าเชื่อถือ
ตามเอกสาร: PL / Python มีเฉพาะภาษาที่ "ไม่น่าเชื่อถือ" ซึ่งหมายความว่ามันไม่ได้มีวิธี จำกัด การใช้งานสิ่งที่ผู้ใช้สามารถทำได้และจึงตั้งชื่อว่า plpythonu ตัวแปรที่เชื่อถือได้ plpython อาจมีให้ใช้ในอนาคตหากกลไกการดำเนินการที่ปลอดภัยได้รับการพัฒนาใน Python ทำไมมันยากที่จะพัฒนากลไกการดำเนินการที่ปลอดภัยสำหรับ Python แต่ไม่ใช่สำหรับภาษาอื่นเช่น Perl?

3
ข้อแตกต่างระหว่าง WITH CTE และ WITH CTE (<column_name>) คืออะไร
ดังที่แสดงในการใช้ Common Table Expressionsบน MSDN คุณสามารถกำหนด CTE เป็น: WITH expression_name [ ( column_name [,...n] ) ] AS ( CTE_query_definition ) และใช้มันเช่น: SELECT &lt;column_list&gt; FROM expression_name; สมมติว่าฉันมี 2 CTE ต่อไปนี้ with cte1 as( select name from Table1 ) with cte2(name) as( select name from Table1 ) แบบสอบถามส่งผลลัพธ์เดียวกันสำหรับ CTE ทั้งสองเนื่องจากแบบสอบถามภายในเหมือนกัน ข้อแตกต่างระหว่างสองสิ่งนี้คือcte2มีชื่อคอลัมน์ ( …

6
วิธีการแก้ไขการจำลองแบบ messed up บน MS SQL Server
ฉันกู้คืนฐานข้อมูลจากข้อมูลสำรอง ฐานข้อมูลใช้การจำลองแบบเพื่อเผยแพร่ไปยังเซิร์ฟเวอร์อื่น สมมติว่าการคืนค่าฐานข้อมูลจะทำให้การจำลองแบบแตกหักฉันพยายามลบการจำลองและสร้างใหม่อีกครั้ง (เรามีสคริปต์เพื่อสร้างใหม่อีกครั้งตั้งแต่เริ่มต้น) ฉันไม่แน่ใจว่าสิ่งที่ฉันทำ แต่ตอนนี้มันอยู่ในสภาพที่ยุ่งเหยิงอย่างสมบูรณ์และฉันไม่สามารถแก้ไขได้ ก่อนอื่นฉันพยายามกำจัดการสมัครรับข้อมูล (บนเซิร์ฟเวอร์ผู้เผยแพร่): EXEC sp_dropsubscription @publication = 'PublicationName', @article = N'all', @subscriber = 'SubscriberServerName' ดูเหมือนว่าจะใช้งานได้ SELECT * FROM syssubscriptionsไม่แสดงผลลัพธ์ ค้นหาเซิร์ฟเวอร์สมาชิก SSMS&gt; {SubscriberServer}&gt; การจำลองแบบ&gt; การสมัครสมาชิกท้องถิ่น - การสมัครสมาชิกไม่ได้อยู่ที่นั่น ดังนั้นฉันจึงพยายามลบสิ่งพิมพ์ SSMS&gt; {Server}&gt; การจำลองแบบ&gt; Local Publications&gt; {PublicationName}&gt; ลบ สิ่งนี้ทำให้เกิดข้อความแสดงข้อผิดพลาดต่อไปนี้: Could not delete publication 'PublicationName'. Could not drop article. A …

1
เชื่อมต่อกับ LocalDB ผ่าน SQLCMD ใน PowerShell
ฉันพยายามเข้าถึงเซิร์ฟเวอร์ "localdb \ MSSQLLocalDB" บนคอมพิวเตอร์ของฉันผ่าน PowerShell ด้วยยูทิลิตี้ SQLCMD ฉันใช้ PowerShell v5, .NET v5.0 และชื่อเซิร์ฟเวอร์คือ(localdb)\MSSQLLocalDBเมื่อฉันเชื่อมต่อกับมันใน Microsoft SQL Server Management Studio 2014 PS C:\&gt; sqlcmd -S localdb\MSSQLLocalDBและPS C:\&gt; sqlcmd -S .\localdb\MSSQLLocalDBทำให้เกิดข้อผิดพลาดนี้: Sqlcmd: ข้อผิดพลาด: Microsoft ODBC Driver 11 สำหรับ SQL Server: อินเทอร์เฟซเครือข่ายเซิร์ฟเวอร์ SQL: ข้อผิดพลาดการค้นหาเซิร์ฟเวอร์ / อินสแตนซ์ที่ระบุ [xFFFFFFFF] ฉันสอบถามชื่อเซิร์ฟเวอร์ใน Management Studio ด้วยSELECT @@ServerNameและใช้หลังจากนั้น-Sในคำสั่งด้านบนและได้รับข้อผิดพลาดเดียวกัน PS …

3
การออกแบบสคีมาสำหรับผลิตภัณฑ์ที่มีหลายรูปแบบ / คุณลักษณะ?
ฉันใช้ MySQL แนวคิดนี้คล้ายกับ shopify ด้วยแนวคิดที่แตกต่างกันดังนั้นผู้ใช้จะเพิ่มผลิตภัณฑ์ของตัวเองด้วยตัวแปรและคุณลักษณะหลายประเภท จากการวิจัยทั้งหมดที่ฉันทำไปแล้วดูเหมือนจะเป็นทางออกที่ดีที่สุดสำหรับฉันและฉันแค่สงสัยว่ามีอะไรผิดปกติกับสคีมาดังต่อไปนี้และอัพไซด์ / ข้อเสียคืออะไร? ขอบคุณ Table: products ------------------------------ | ID | ProductName | |----------------------------| | 1 | Leather Wallet Case | | 2 | Jeans | | 3 | Power Bank | Table: products_variants ------------------------------- | ID | ProductId | ParentId | Variant | VariantName | …

2
ตัวเลข vs Integer สำหรับคอลัมน์ขนาดและประสิทธิภาพ
ฉันมีแอปพลิเคชั่นซึ่งใช้ตาราง PostgreSQL ตารางมีขนาดใหญ่มาก (พันล้านแถว) และมีคอลัมน์ซึ่งเป็นจำนวนเต็ม integerสามารถเป็นได้ถึง 6 หลักเช่น 0-999,999 ไม่มีเชิงลบ numeric(6,0)ฉันคิดเกี่ยวกับการเปลี่ยนให้เป็น นี่เป็นความคิดที่ดีไหม จะnumeric(6,0)น้อยกว่าไบต์? วิธีการเกี่ยวกับประสิทธิภาพ (ตารางนี้มีการสอบถามมาก)
11 postgresql 

4
วิธีที่เหมาะสมในการจัดเก็บค่าที่อาจแตกต่างกันหลายประเภท
ฉันมีตารางคำตอบและตารางคำถาม ตารางคำตอบมีค่า แต่ขึ้นอยู่กับคำถามที่ว่าค่านี้อาจจะเป็นbit, nvarcharหรือnumber(ไกล) คำถามที่มีความคิดของสิ่งที่คำตอบประเภทค่าตั้งใจที่ควรจะเป็น การแยกวิเคราะห์ค่าคำตอบเหล่านี้จะต้องมีความสำคัญเนื่องจากจะต้องเปรียบเทียบอย่างน้อยหนึ่งตัวเลข สำหรับบริบทเพิ่มเติมอีกเล็กน้อยคำถามและคำตอบที่เป็นไปได้ (โดยทั่วไปคือประเภทข้อมูลที่อนุญาตให้ป้อนข้อมูลประเภทกล่องข้อความ) ได้รับการจัดทำโดยผู้ใช้บางรายในการสำรวจเรียงลำดับ คำตอบนั้นจะได้รับจากผู้ใช้ที่ระบุรายอื่น ตัวเลือกสองสามอย่างที่ฉันพิจารณาคือ: A. XML หรือสตริงที่ได้รับการวิเคราะห์คำแตกต่างกันไปขึ้นอยู่กับประเภทที่ต้องการ (ซึ่งถูกติดตามในคำถาม) B. ตารางที่แยกต่างหากสามตารางที่อ้างอิง (หรืออ้างอิงโดย) ตารางตอบรับและเข้าร่วมตามประเภทที่ต้องการ ในกรณีนี้ฉันไม่แน่ใจว่าวิธีที่ดีที่สุดในการตั้งค่าข้อ จำกัด เพื่อให้แน่ใจว่าคำถามแต่ละข้อมีคำตอบเดียวเท่านั้นหรือควรทิ้งไว้ในแอปพลิเคชัน C. สามคอลัมน์แยกกันในตาราง Answer ที่สามารถดึงข้อมูลได้ตามประเภทที่ต้องการ ฉันยินดีที่จะได้รับข้อมูลเกี่ยวกับข้อดีข้อเสียของวิธีการเหล่านี้หรือวิธีการอื่นที่ฉันไม่ได้พิจารณา

3
“ การอ้างอิงที่ไม่ได้รับการแก้ไขกับผู้ใช้” หลังจากนำเข้าเป็นโครงการ VS DB
ฉันเพิ่งนำเข้าฐานข้อมูลการผลิต SQL Server 2008r2 ที่มีอยู่ไปยังโครงการฐานข้อมูล VS 2013 ตอนนี้ฉันได้รับข้อผิดพลาดจำนวนมากตามแนวของ Error SQL71501: User: [mydbuser] has an unresolved reference to Login [mydbuser]. ฉันไม่ต้องการโครงการ VS DB ของฉันเพื่อจัดการผู้ใช้ แต่ฉันกังวลว่ามันจะพยายามลบออกเมื่อทำการปรับใช้หากไม่ได้อยู่ที่นั่น ตัวไฟล์เองนั้นถูกสร้างขึ้นเป็น CREATE USER [mydbuser] FOR LOGIN [mydbuser]; หรือ CREATE USER [mydomainuser] FOR LOGIN [MYDOMAIN\mydomainuser]; เครื่องหมายแสดงให้เห็นข้อผิดพลาดว่ามันเป็นเฉพาะสำหรับการเข้าสู่ระบบ เนื่องจากเป็นวัตถุระดับระบบฉันสามารถเข้าใจว่ามันอยู่นอกขอบเขตของโครงการ db เป็นที่ต้องการหรือไม่ที่ฉันจะเปลี่ยนพวกเขาทั้งหมดเป็น CREATE USER [mydbuser] WITHOUT LOGIN; หรือเพิ่มส่วนCREATE LOGINคำสั่งที่จุดเริ่มต้นของแต่ละไฟล์? การลบข้อมูลอ้างอิงการเข้าสู่ระบบดูเหมือนจะง่ายกว่าและการลบผู้ใช้ทั้งหมดจะง่ายที่สุด …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.