قسمت اول را در این آدرس میتوانید مطالعه نمائید.
در ادامه قسمت اول، اگر بخواهیم نود جدیدی را به فیلد XML موجود اضافه کنیم، روش انجام آن به صورت زیر است (یکی از روشها البته):
DECLARE @tblTest AS TABLE (xmlField XML)
INSERT INTO @tblTest
(
xmlField
)
VALUES
(
'<Sample>
<Node1>Value1</Node1>
<Node2>Value2</Node2>
<Node3>OldValue</Node3>
</Sample>'
)
DECLARE @Name NVARCHAR(50)
SELECT @Name = 'Vahid'
UPDATE @tblTest
SET xmlField.modify(
'insert element Node4 {sql:variable("@Name")} as last into
(/Sample)[1]'
)
SELECT tt.xmlField
FROM @tblTest tt
که حاصل آن (افزوده شدن یک المان جدید به نام Node4 بر اساس مقدار متغیر Name در انتهای لیست) به صورت زیر میباشد:
<Sample>
<Node1>Value1</Node1>
<Node2>Value2</Node2>
<Node3>OldValue</Node3>
<Node4>Vahid</Node4>
</Sample>
سؤال 1 :
اگر بخواهیم نام Node4 نیز متغیر باشد به چه صورتی باید مساله را حل کرد؟
در این حالت باید از کوئریهای داینامیک استفاده کرد. باید یک رشته را ایجاد (کل عبارت update باید یک رشته شود) و سپس از دستور exec کمک گرفت و البته باید دقت داشت در این حالت کار encoding کارکترهای غیرمجاز در XML را باید خودمان انجام دهیم.
سؤال 2:
اگر بخواهیم نام نودها و مقادیر آنها را به صورت یک جدول معمولی بازگشت دهیم به چه صورتی باید عمل کرد؟
DECLARE @XML AS XML
SELECT @XML = tt.xmlField
FROM @tblTest tt
SELECT t.c.value('local-name(..)', 'varchar(max)') AS ParentNodeName,
t.c.value('local-name(.)', 'varchar(max)') AS NodeName,
t.c.value('text()[1]', 'varchar(max)') AS NodeText
FROM @XML.nodes('/*/*') AS t(c)
که پس از اجرای آن خواهیم داشت:
ParentNodeName - NodeName - NodeText
Sample Node1 Value1
Sample Node2 Value2
Sample Node3 OldValue
Sample Node4 Vahid
جدول زیر تعداد باگهای امنیتی Oracle11g و SQL server 2008 را تا ماه نوامبر 2009 نمایش میدهد:
Product | Advisories | Vulnerabilities |
SQL Server 2008 | 0 | 0 |
Oracle11g | 7 | 239 |
و به صورت خلاصه مایکروسافت در 6 سال گذشته تنها 59 باگ امنیتی وصله شده مربوط به نگارشهای مختلف SQL Server داشته است (از نگارش 2000 به بعد). در طی همین مدت اوراکل (نگارشهای 8 تا 10) تعداد 233 وصله امنیتی را ارائه داده است.
در سال 2006 ، اس کیوال سرور 2000 با سرویس پک 4 ، به عنوان امنترین بانک اطلاعاتی موجود در بازار شناخته شد (به همراه PostgreSQL). در همین زمان Oracle10g در قعر این جدول قرار گرفت.
اعداد و آمار از سایت secunia.com استخراج شده است: + و +
اشتراکها
بررسی تازههای SQL Server 2022
اشتراکها
ارائه خطاهای بهتر در SQL Server 2019
اشتراکها
بررسی ویژگیهای جدید SQL Server 2017
اشتراکها
کتاب معرفی SQL Server 2016
Chapter one: Faster queries
Chapter two: Better security
Chapter three: Higher availability
Chapter four: Improved database engine
Chapter five: Broader data access
Chapter six: More analytics
Chapter seven: Better reporting
Chapter eight: Improved Azure SQL Database
Chapter nine: Expanding your options with Azure SQL Data Warehouse
اشتراکها