XML Schema Collection (SQL Server 2012): How to create an XML Schema Collection that can be used to Validate a field name (column title) of an existing dbo Table of a Database in SSMS2012?
Hi all,
I used the following code to create a new Database (ScottChangDB) and a new Table (marvel) in my SQL Server 2012 Management Studio (SSMS2012) successfully:
-- ScottChangDB.sql saved in C://Documents/SQL Server XQuery_MacLochlainns Weblog_code
-- 14 April 2015 09:15 AM
USE master
IF EXISTS
(SELECT 1
FROM sys.databases
WHERE name = 'ScottChangDB')
DROP DATABASE ScottChangDB
GO
CREATE DATABASE ScottChangDB
GO
USE ScottChangDB
CREATE TABLE [dbo].[marvel] (
[avenger_name] [char] (30) NULL, [ID] INT NULL)
INSERT INTO marvel
(avenger_name,ID)
VALUES
('Hulk', 1),
('Iron Man', 2),
('Black Widow', 3),
('Thor', 4),
('Captain America', 5),
('Hawkeye', 6),
('Winter Soldier', 7),
('Iron Patriot', 8);
SELECT avenger_name FROM marvel ORDER BY ID For XML PATH('')
DECLARE @x XML
SELECT @x=(SELECT avenger_name FROM marvel ORDER BY ID FOR XML PATH('Marvel'))--,ROOT('root'))
SELECT
person.value('Marvel[4]', 'varchar(100)') AS NAME
FROM @x.nodes('.') AS Tbl(person)
ORDER BY NAME DESC
--Or if you want the completed element
SELECT @x.query('/Marvel[4]/avenger_name')
DROP TABLE [marvel]
Now I am trying to create my first XML Schema Collection to do the Validation on the Field Name (Column Title) of the "marvel" Table. I have studied Chapter 4 XML SCHEMA COLLECTIONS of the book "Pro SQL Server 2008 XML" written by
Michael Coles (published by Apress) and some beginning pages of XQuery Language Reference, SQL Server 2012 Books ONline (published by Microsoft). I mimicked Coles' Listing 04-05 and I wanted to execute the following first-drafted sql in
my SSMS2012:
-- Reference [Scott Chang modified Listing04-05.sql of Pro SQL Server 2008 XML by Michael Coles (Apress)]
-- [shcColes04-05.sql saved in C:\\Documents\XML_SQL_Server2008_code_Coles_Apress]
-- [executed: 2 April 2015 15:04 PM]
-- shcXMLschemaTableValidate1.sql in ScottChangDB of SQL Server 2012 Management Studio (SSMS2012)
-- saved in C:\Documents\XQuery-SQLServer2012
tried to run: 15 April 2015 ??? AM
USE ScottChangDB;
GO
CREATE XML SCHEMA COLLECTION dbo. ComplexTestSchemaCollection_all
AS
N'<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="marvel">
<xsd:complexType>
<xsd:all>
<xsd:element name="avenger_name" />
<xsd:element name="ID" />
</xsd:all>
</xsd:complexType>
</xsd:element>
</xsd:schema>';
GO
DECLARE @x XML (dbo. ComplexTestSchemaCollection_all);
SET @x = N'<?xml version="1.0"?>
<marvel>
<avenger_name>Thor</name>
<ID>4</ID>
</marvel>';
SELECT @x;
GO
DROP XML SCHEMA COLLECTION dbo.ComplexTestSchemaCollection_all;
GO
I feel that drafted sql is very shaky and it needs the SQL Server XML experts to modify to make it work for me. Please kindly help, exam the coding of my shcXMLTableValidate1.sql and modify it to work.
Thanks in advance,
Scott Chang
Hi Scott,
2) Yes, FOR XML PATH clause converts relational data to XML format with a specific structure for the "marvel" Table. Regarding validate all the avenger_names, please see below
sample.
DECLARE @x XML
SELECT @x=(SELECT ID ,avenger_name FROM marvel FOR XML PATH('Marvel'))
SELECT @x
SELECT
n.value('avenger_name[1]','VARCHAR(99)') avenger_name,
n.value('ID[1]','INT') ID
FROM @x.nodes('//Marvel') Tab(n)
WHERE n.value('ID[1]','INT') = 1 -- specify the ID here
--FOR XML PATH('Marvel') --uncommented this line if you want the result as element type
3)i.check the xml schema content
--find xml schema collection
SELECT ss.name,xsc.name collection_name FROM sys.xml_schema_collections xsc JOIN sys.schemas ss ON xsc.schema_id= ss.schema_id
select * from sys.schemas
--check the schema content,use the name,collection_name from the above query
SELECT xml_schema_namespace(N'name',N'collection_name')
3)ii. View can be viewed as virtual table. Use a view to list the XML schema content.
CREATE VIEW XSDContentView
AS
SELECT ss.name,xsc.name collection_name,cat.content
FROM sys.xml_schema_collections xsc JOIN sys.schemas ss ON xsc.schema_id= ss.schema_id
CROSS APPLY(
SELECT xml_schema_namespace(ss.name,xsc.name) AS content
) AS cat
WHERE xsc.name<>'sys'
GO
SELECT * FROM XSDContentView
By the way, it would be appreciated if you can spread your questions into posts. For any question, feel free to let me know.
Eric Zhang
TechNet Community Support
Similar Messages
-
Hi all,
In my SQL Server 2012 Management Studio (SSMS2012), I tried to create a Database (MacLochainnsDB) and a dbo Table (marvel). then I wanted insert 8 VALUES into the Table by using the following code:
USE master
IF EXISTS
(SELECT 1
FROM sys.databases
WHERE name = 'MacLochlainnsDB')
DROP DATABASE MacLochlainnsDB
GO
CREATE DATABASE MacLochlainnsDB
GO
CREATE TABLE [dbo].[marvel] (
[avenger_name] [char] (30) NULL)
INSERT INTO marvel
(avenger_name)
VALUES
('Hulk', 1),
('Iron Man', 2),
('Black Widow', 3),
('Thor', 4),
('Captain America', 5),
('Hawkeye', 6),
('Winter Soldier', 7),
('Iron Patriot', 8)
I got the following error Message:
Msg 110, Level 15, State 1, Line 5
There are fewer columns in the INSERT statement than values specified in the VALUES clause. The number of values in the VALUES clause must match the number of columns specified in the INSERT statement.
How can I correct this problem?
Please kindly help and advise.
Thanks in advance,
Scott Chang
P. S.
The reason I tried to create the Database, dbo Table, and then to insert the VALUES is to learn the following thing:
You can query the entire node tree with the following xquery statement because it looks for the occurrence of any node with the /* search string:
DECLARE @x xml;
SET @x = N'<marvel>
<avenger_name>Captain America</avenger_name>
</marvel>';
SELECT @x.query('/*');
You can query the avenger_name elements from the marvel_xml table with the following syntax:
SELECT xml_table.query('/marvel/avenger_name')
FROM marvel_xml;
It returns the following set of avenger_name elements:
<avenger_name>Hulk</avenger_name>
<avenger_name>Iron Man</avenger_name>
<avenger_name>Black Widow</avenger_name>
<avenger_name>Thor</avenger_name>
<avenger_name>Captain America</avenger_name>
<avenger_name>Hawkeye</avenger_name>
<avenger_name>Winter Soldier</avenger_name>
<avenger_name>Iron Patriot</avenger_name>
You can query the fourth avenger_name element from the marvel_xml table with the following xquery statement:
SELECT xml_table.query('/marvel[4]/avenger_name')
FROM marvel_xml;
It returns the following avenger_name element:
<avenger_name>Thor</avenger_name>Hi Scott,
The master database records all the system-level information for a SQL Server system, so best practise would be not to create any user-defined
object within it.
To change your default database(master by default) of your login to another, follow the next steps so that next time when connected you don't have to use "USE dbname" to switch database.
Open SQL Server Management Studio
--> Go to Object explorer(the left panel by default layout)
--> Extend "Security"
--> Extend "Logins"
--> Right click on your login, click "propertites"
--> Choose the "Default database" at the bottom of the pop-up window.
--or simply by T-SQL
Exec sp_defaultdb @loginame='yourLogin', @defdb='youDB'
Regarding your question, you can reference the below.
SELECT * FROM master.sys.all_objects where name ='Marvel'
--OR
SELECT OBJECT_ID('master.dbo.Marvel') --if non empty result returns, the object exists
--usually the OBJECT_ID is used if a if statement as below
IF OBJECT_ID('master.dbo.Marvel') IS NOT NULL
PRINT ('TABLE EXISTS') --Or some other logic
What is the sys.all_objects? See
here.
If you have any question, feel free to let me know.
Eric Zhang
TechNet Community Support -
How to build a custom movie clip that will be used as a cell renderer for column in a grid ?
i want to build a datagrid that shows a picture and underneath it a name.
the problem is i dont want to see all of the pictures, but all the pictures that have certain requirements, so i cant just make one movie clip that includes all the pictures and names.
so my question is how do i build a movie clip that contains photo and text?.You do not create movieclips on the timeline using code, though you can create them and add them as children of something that has been manually placed in the timeline.
To create a MovieClip using code you use:
var mc:MovieClip = new MovieClip();
If you need to add an image, then however you intend to acquire the image, after it has been acquired, you add it to the MovieClip using:
mc.addChild(img);
where img is the instance of whatever form of object the image takes (Bitmap, Loader)
If you need to add a TextField to the MovieClip then you use:
var tf:TextField = new TextField();
mc.addChild(tf);
and you can set up properties for the textfield such as the font and color and position as well after it has been instantiated (the first line). -
How to create a DLL in CVI which can be used in MFC?
I want to create a DLL in CVI and use the DLL in MFC. But even if I tried
many ways, I cannot reach the objective. There are always link errors. Could
you give me some instructions about it?I once made a DLL that I could call from Excel, and I noticed the LabWindows
DLL would call the runtime DLL (CVIRT.DLL). So maybe you must add the
runtime lib in some way to your MFC project?
Hans D. Jensen
"Bo Bai" wrote in message
news:[email protected]..
>
> I want to create a DLL in CVI and use the DLL in MFC. But even if I tried
> many ways, I cannot reach the objective. There are always link errors.
Could
> you give me some instructions about it? -
As per subject -- we have a need to declare variable in class that will hold enum's Class object. At some point we want to use this variable as a Class argument for Enum.valueOf(.) which has the following signature:
public static <T extends Enum<T>> T valueOf(Class<T> enumType, String name) {..}So far we cannot come up with a workable solution.
private final Class<? extends Enum<?>> propertyClass;doesn't work (apparently because second ? should in fact be the same as first ? -- which works with T for class/method templates, but cannot be used for variables). Error message (in Eclipse) is:
Bound mismatch: The generic method valueOf(Class<T>, String) of type Enum<E> is not applicable for the arguments (Class<capture#13-of ? extends Enum<?>>, String). The inferred type capture#13-of ? extends Enum<?> is not a valid substitute for the bounded parameter <T extends Enum<T>>
So what would be the proper way to declare the variable?
Thanks in advance!the enum.valueof method is a little weird. they implemented it so it is nice and "safe". if you don't care about that safety, you can probably work with raw types for that bit of code and get the call to go through. you just won't have any type safety on the result.
-
Hi all,
In the Notepad, I created an xml file (ZenQroducts.xml) :
<Qroducts>
<Qroduct>
<SKU>1</SKU>
<Desc>Book</Desc>
</Qroduct>
<Qroduct>
<SKU>2</SKU>
<Desc>DVD</Desc>
</Qroduct>
<Qroduct>
<SKU>3</SKU>
<Desc>Video</Desc>
</Qroduct>
In my SQL Server 2012 Management Studio, I executed the following code:
--to create a new object Qroducts in a new database OPENXMLtesting
CREATE DATABASE OPENXMLtesting
GO
CREATE TABLE Qroducts(
sku INT Primary KEY,
qroduct_desc VARCHAR(30));
INSERT INTO Qroducts (sku, qroduct_desc)
SELECT X.qroduct.query('SKU').value('.', 'INT'),
X.qroduct.query('Desc').value('.', 'VARCHAR(30)')
FROM (
SELECT CAST(x AS XML)
FROM OPENROWSET(
BULK 'H:\ZenQroducts.xml',
SINGLE_BLOB) AS T(x)
) AS T(x)
CROSS APPLY x.nodes('Qroducts/Qroduct') AS X(qroduct);
SELECT sku, qroduct_desc
FROM Qroducts;
I got the following message:
Msg 9400, Level 16, State 1, Line 6
XML parsing: line 13, character 12, unexpected end of input
I have no ideas why I got this "XML parsing:line 13, character12, unexpected end of input" message. Please kindly help, advise me on where I made mistake and how I can resolve this problem, and respond in this Forum.
Thanks in advance,
Scott Chang
Hi Manish, Thanks for your response.
Yes, it is a duplicate with Qroducts/Qroduct instead of Products/Product. I did it, because I don't know how to remove the existing "Products" database.
Again, I got the existing "Qroducts" database in this second trial!!?? I am comletely lost in doing "Importing XML file to SQL Table" now!! I think that I have not touched T-SQL and XML programming, since 2008. I
did not catch the new features of T-SQL 2008, XML, SQL/XML, XQuery, etc. for long time. Recently, I did not know what DECLARE, @x, SET,...were, and dived into the SQL/XML and XQuery programming. I knew the SQL Basics (SELECT, FROM, WHERE,..), creating
the names of databases and tables in SQL Server 2008/2012 Management Studio (Express) before. This morning, I found an old T-SQL 2008 Prgrammer's Guide that has the new features of SQL Server 2008 for T-SQL, XML, XQuery, etc. I just starting reading
it to know what DECLARE, @x, SET,... are. But, I still don't know where the existing databases "Products" and "Qroducts" (created by me) are - they are not in the Databases of SQL Server 2012 Management Studio I am using!!?? Could
you please kindly point out where the "Products" and "Qroducts" databases are?
Prashanth responded to my posted question too and he asked to to try his code: DECLARE @xml XML, SELECT @xml =' <Qroducts>.....SELECT product.value.....FROM @XML.nodes.....AS.... I just learned that his code is doing the thing we
want to do and print the results below the SQL Query. This is not what I need in doing my SQL/XML programming. I am reading/studying the new (2008) features of T-SQL, XQuery 1.0: An XML Query Language (Second Edition), and Microsoft XQuery Language Reference
(SQL Server 2012 Books Online) closely now. I hope that I can resume the T-SQL, XML Query, SQL/XML, XQuery in my SQL Server 2012 Management Studio soon.
Please tell me where the existing databases "Products" and "Qroducts" I created in my previous trials in my SQL Server 2012 Management Studio. This is what I need to know and to delete them, before I do this kind of "Importing
XML file to Table of SQL Server 2012 Management Studio" programming again.
Please kindly help, advise and respond again.
Many Thanks,
Scott Chang -
Data types not compatible with Sql Server 2012
HI All,
I need to know what are data types which were present in sql server 2005 but are not in sql server 2012.
Regards
RahulHi vaibhav
Thanks for help. Actually my requirement is that I have one database on sql server 2005 version. I am planning to migrate it to sql server 2012 version. I want to publish a list of all objects across all databases which cannot be replicated to sql server
2012.How can I do this. Are there any data types which were in sql 2005 version but are depreciated in sql server 2012
Regards
Rahul
yes there are
but why not look at here for breaking changes
http://msdn.microsoft.com/en-us/library/ms143179(v=sql.110).aspx
The deprecated features would still work though new development using them is discouraged
Please Mark This As Answer if it solved your issue
Please Vote This As Helpful if it helps to solve your issue
Visakh
My Wiki User Page
My MSDN Page
My Personal Blog
My Facebook Page -
I am investigating the impact of upgrading from SQL Server 2008 R2 to SQL Server 2012. To reduce the impact of the upgrade, I am planning to restore / create our application database onto SQL Server 2012 with compatibility level 100 (SQL Server 2008 and
SQL Server 2008 R2).
Are there any differences in feature support for database running in native mode on SQL Server 2008 R2 vs a database installed on SQL Server 2012 with compatibility level 100 set?Are there any differences in feature support for database running in native mode on SQL Server 2008 R2 vs a database installed on SQL Server 2012 with compatibility level 100 set?
Yes there can be difference and impact there are few features deprecated in SQL Server 2012 you must be aware about that. Please see
Deprecated Database Features in SQL Server 2012
Deprecated SQL Server features in SQL Server 2012
After you migrate database to 2012 please don't move ahead with production unless you have tested your application to new created database
Please mark this reply as answer if it solved your issue or vote as helpful if it helped so that other forum members can benefit from it
My Technet Wiki Article
MVP -
Create Assembly fails in SQL Server 2012 SP1 if an assembly is built with Platform Target as AnyCPU
Environment:
Windows 2008 R2.
SQL Server 2012 SP1 64 bit.
I have a .NET assembly built using .NET Framework 4.0 with Platform Target set to AnyCPU and Unsafe options. The assembly has dependency on few other assemblies and has unmanaged code also. When I run CREATE ASSEMBLY for this assembly I get the following
error message.
Assembly '<assembly name>' could
not be installed because existing policy would keep it
from being used.
However if I change the compile option to x64 instead of AnyCPU, I can successfully create the assembly. So my question : Does SQL Server 2012 64 bit requires assemblies that have Unmanaged code or makes calls to native libraries need to be built using x64
bit option? AnyCPU should not be used?
Thanks in AdvanceHello,
The default setting of a Visual Studio project is "Any CPU".SO on a 64 bit system this means the program will automatically run as a 64 bit application and on a 32 bit system it will automatically run as a 32 bit application. But if you have a dependency
assembly which is either x86 or x64, technically your project is therefore not "Any CPU" compatible.
According to BOL: If the the assembly is 100% type safe which there is no dependencies on native code or COM objects and that there is no 'unsafe' code, it is possible to take the .NET executable
that you run on your 32-bit machine and move it to the 64-bit system and have it run successfully.
In your case, the issue may caused by the unsafe code and you should spcify the platform target to X64 to make is run on the 64 bit system.
Reference:http://www.hanselman.com/blog/BackToBasics32bitAnd64bitConfusionAroundX86AndX64AndTheNETFrameworkAndCLR.aspx
Regards,
Fanny Liu
If you have any feedback on our support, please click here.
Fanny Liu
TechNet Community Support -
"set deadlock_priority" not effective in SQL Server 2012?
I am trying to control which of two sessions is chosen as the deadlock victim in SQL Server 2012. I have set up a test that induces a deadlock by updating two tables in opposite order with a "waitfor" in between the updates. I can consistently
repro the deadlock and have code that will catch it and re-try the transaction.
However, when I run "set deadlock_priority low" for one of the sessions, it does not change which victim is chosen. SQL Server consistently chooses the session that starts last as the deadlock victim regardless of this setting. I have verified
that the setting is correct by selecting deadlock_priority from sys.dm_exec_sessions. I have tried setting the session that starts first to "low" and the one that starts second to "high". In spite of that, the second one is always
the one that gets chosen as the victim.
Is this the expected behavior?
Thanks,
Ron Rice
Ron RiceI didn't try extremely hard, but I was not able to reproduce the issue. Running in the Northwind database, I had this in one window:
SET DEADLOCK_PRIORITY LOW
go
BEGIN TRANSACTION
go
SELECT * FROM Orders WITH (REPEATABLEREAD) WHERE OrderID = 11000
WAITFOR DELAY '00:00:02'
UPDATE Orders SET CustomerID = 'ALFKI' WHERE OrderID = 11000
go
ROLLBACK TRANSACTION
and in the other window I had:
SET DEADLOCK_PRIORITY HIGH
go
BEGIN TRANSACTION
go
SELECT * FROM Orders WITH (REPEATABLEREAD) WHERE OrderID = 11000
WAITFOR DELAY '00:00:02'
UPDATE Orders SET CustomerID = 'ALFKI' WHERE OrderID = 11000
go
ROLLBACK TRANSACTION
And every time I tried, it was the first window that fell on the floor.
Erland Sommarskog, SQL Server MVP, [email protected] -
SQL Server 2012 Management Studio Crashed when opening the application
Hi,
I had installed SharePoint 2013 with SQL Server 2012 on a single server environment a couple of months ago. Both the tools were working fine. But today morning i found that when opening SQL Server 2012 Management Studio it displays a pop-up message as attached
below:
Event Log:
Faulting application name: Ssms.exe, version: 2011.110.3000.0, time stamp: 0x5081c1cd
Faulting module name: Ssms.exe, version: 2011.110.3000.0, time stamp: 0x5081c1cd
Exception code: 0xc0000005
Fault offset: 0x00004b89
Faulting process id: 0x2b0c
Faulting application start time: 0x01cf54780a2efde8
Faulting application path: C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\Ssms.exe
Faulting module path: C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\Ssms.exe
Report Id: 47e02c36-c06b-11e3-946b-00155d040605
Faulting package full name:
Faulting package-relative application ID:
Server Details:
Windows Server 2012 Standard
MS SharePoint 2013
MS SQL Server 2012
IIS 8.0
If anyone has faced the same problem or has a workaround, please share!
ThanksHello,
Applying Service Pack 1 for SQL Server 2012 may solve this issue.
Hope this helps.
Regards,
Alberto Morillo
SQLCoffee.com -
Can I uninstall a hotfix from SQL Server 2012?
I need to apply CU 7 to some SQL Server 2012 instances. If something goes wrong with this, can I uninstall CU7?
I need to apply CU 7 to some SQL Server 2012 instances. If something goes wrong with this, can I uninstall CU7?
If you are looking for this as rollback plan then answer is Yes. But my advice would be to perform testing of any patch in QA/Dev before rolling out to production.
Balmukund Lakhani | Please mark solved if I've answered your question, vote for it as helpful to help other users find a solution quicker
This posting is provided "AS IS" with no warranties, and confers no rights.
My Blog |
Team Blog | @Twitter
Author: SQL Server 2012 AlwaysOn -
Paperback, Kindle -
Cumulative update 15 for SQL Server 2012 SP1 is released
Cumulative update 15 for SQL Server 2012 SP1 is released
http://support.microsoft.com/en-us/kb/3038001
MDS related fix is:
FIX: Add three stored procedures to clean up history that is created when you use SQL Server 2012 MDS
http://support.microsoft.com/en-us/kb/3036601
After using MDS for a while, the transaction/validation/staging history may grow very large. In this CU we provide 3 store procedure to clean them up manually.
The fix will be ported over to SQL 2012 SP2 and SQL 2014 CUs in the coming 2 months.
In next SQL Server release, it will be automated by MDS maintenance job.
--@ModelID is the model ID that you clean up the log for.
--@CLeanupOlderThanDate is the date before that the logs or records is deleted.
DECLARE @CleanupOlderThanDate date = '<Date>', @ModelID INT = <ID>
--Cleanup Transaction History
EXEC mdm.udpTransactionsCleanup @ModelID, @CleanupOlderThanDate;
--Cleanup Validation History
EXEC mdm.udpValidationsCleanup @ModelID, @CleanupOlderThanDate;
--Cleanup entity-based staging table
EXEC mdm.udpEntityStagingBatchTableCleanup @ModelID, @CleanupOlderThanDate;Hi SelvaOnline,
I would recommend to install SP2 and the hotfix that came after it.
If you don't have a reason to install a CU than don't bother with it.
SP2:
http://www.microsoft.com/en-us/download/details.aspx?id=43340
Hotfix for SP2;
http://support.microsoft.com/kb/2969896/en-us
Thanks,
Teun -
Hi all,
Long time ago, I manually created a Database (APGriMMRP) and 3 Tables (dbo.Table_1_XYcoordinates, dbo.Table_2_Soil, and dbo.Table_3_Water) in my SQL Server 2012 Management Studio (SSMS2012). The dbo.Table_1_XYcoordinates has the following columns: file_id,
Pt_ID, X, Y, Z, sample_id, Boring. The dbo.Table_2_Soil has the following columns: Boring, sample_date, sample_id, Unit, Arsenic, Chromium, Lead. The dbo.Table_3_Water has the following columns: Boring, sample_date, sample_id, Unit, Benzene, Ethylbenzene,
Pyrene. The dbo.Table_1_XYcoordinates is a Parent Table. The dbo.Table_2_Soil and the dbo.Table_3_Water are 2 Child Tables. The sample_id is key link for the relationship between the Parent Table and the Child Tables.
Problem #1) How can I print out or export these 3 dbo Tables?
Problem #2) If I right-click on the dbo Table, I see "Start PowerShell" and click on it. I get the following error messages: Warning: Failed to load the 'SQLAS' extension: An exception occurred in SMO while trying to manage a service.
--> Failed to retrieve data for this request. --> Invalid class. Warning: Could not obtain SQL Server Service information. An attemp to connect to WMI on 'NAB-WK-02657306' failed with the following error: An exception occurred in SMO while trying
to manage a service. --> Failed to retrieve data for this request. --> Invalid class. .... PS SQLSERVER:\SQL\NAB-WK-02657306\SQLEXPRESS\Databases\APGriMMRP\Table_1_XYcoordinates> What causes this set of error messages? How can
I get this problem fixed in my PC that is an end user of the Windows 7 LAN System? Note: I don't have the regular version of Microsoft Visual Studio 2012 in my PC. I just have the Microsoft 2012 Shell (Integrated) program in my PC.
Problem #3: I plan to create an XML Schema Collection in the "APGriMMRP" database for the Parent Table and the Child Tables. How can I handle the relationship between the Parent Table and the Child Table in the XML Schema Collection?
Problem #4: I plan to extract some results/data from the Parent Table and the Child Table by using XQuery. What kind of JOIN (Left or Right JOIN) should I use in the XQuerying?
Please kindly help, answer my questions, and advise me how to resolve these 4 problems.
Thanks in advance,
Scott ChangIn the future, I would recommend you to post your questions one by one, and to the appropriate forum. Of your questions it is really only #3 that fits into this forum. (And that is the one I will not answer, because I have worked very little with XSD.)
1) Not sure what you mean with "print" or "export", but when you right-click a database, you can select Tasks from the context menu and in this submenu you find "Export data".
2) I don't know why you get that error, but any particular reason you want to run PowerShell?
4) If you have tables, you query them with SQL, not XQuery. XQuery is when you query XML documents, but left and right joins are SQL things. There are no joins in XQuery.
As for left/right join, notice that these two are equivalent:
SELECT ...
FROM a LEFT JOIN b ON a.col = b.col
SELECT ...
FROM b RIGHT JOIN a ON a.col = b.col
But please never use RIGHT JOIN - it gives me a headache!
There is nothing that says that you should use any of the other. In fact, if you are returning rows from parent and child, I would expect an inner join, unless you want to cater for parents without children.
Here is an example where you can study the different join types and how they behave:
CREATE TABLE apple (a int NOT NULL PRIMARY KEY,
b varchar(23) NOT NULL)
INSERT apple(a, b)
VALUES(1, 'Granny Smith'),
(2, 'Gloster'),
(4, 'Ingrid-Marie'),
(5, 'Milenga')
CREATE TABLE orange(c int NOT NULL PRIMARY KEY,
d varchar(23) NOT NULL)
INSERT orange(c, d)
VALUES(1, 'Agent'),
(3, 'Netherlands'),
(4, 'Revolution')
SELECT a, b, c, d
FROM apple
CROSS JOIN orange
SELECT a, b, c, d
FROM apple
INNER JOIN orange ON apple.a = orange.c
SELECT a, b, c, d
FROM apple
LEFT OUTER JOIN orange ON apple.a = orange.c
SELECT a, b, c, d
FROM apple
RIGHT OUTER JOIN orange ON apple.a = orange.c
SELECT a, b, c, d
FROM apple
FULL OUTER JOIN orange ON apple.a = orange.c
go
DROP TABLE apple, orange
Erland Sommarskog, SQL Server MVP, [email protected] -
Hi all,
I just got a copy of the book "Pro SQL Server 2008 XML" written by Michael Coles (published by Apress) and try to learn the XML Schema Collection in my SQL Server 2012 Management Studio (SSMS2012). I studied Chapter 4 XML Collection of the book
and executed the following code of Listing 4-8 Complex Schema with Attribute:
-- Pro SQL Server 2008 XML by Michael Coles (Apress)
-- Listing04-08.sql Complex XML Schema with Attribute
-- shcColes04-08.sql saved in C:\\Documents\XML_SQL_Server2008_code_Coles_Apress
-- 6 April 2015 8:00 PM
CREATE XML SCHEMA COLLECTION dbo.ComplexTestSchemaCollection_attribute
AS
N'<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="item">
<xs:complexType>
<xs:sequence>
<xs:element name="name" />
<xs:element name="color" />
<xs:group ref="id-price" />
<xs:group ref="size-group" />
</xs:sequence>
<xs:attribute name="id" />
<xs:attribute name="number" />
</xs:complexType>
</xs:element>
<xs:group name="id-price">
<xs:choice>
<xs:element name="list-price" />
<xs:element name="standard-cost" />
</xs:choice>
</xs:group>
<xs:group name="size-group">
<xs:sequence>
<xs:element name="size" />
<xs:element name="unit-of-measure" />
</xs:sequence>
</xs:group>
</xs:schema>';
GO
DECLARE @x XML (dbo.ComplexTestSchemaCollection_attribute);
SET @x = N'<?xml version="1.0"?>
<item id="749" number="BK-R93R-62">
<name>Road-150 Red, 62</name>
<color>Red</color>
<list-price>3578.27</list-price>
<size>62</size>
<unit-of-measure>CM</unit-of-measure>
</item>';
SELECT @x;
GO
DROP XML SCHEMA COLLECTION dbo.ComplexTestSchemaCollection_attribute;
It worked nicely. But, I just found out the coding that was downloaded from the website of Apress and I just executed was different from the coding of Listing 4-8 listed in the book: all the <xs: ....> and </xs: ..> in my SSMS2012 are
listed as <xsd:...> and </xsd:...> respectively in the book!!?? The same thing happens in the Listing 4-3 Simple XML Schema, Listing 4-5 XML Schema and Valid XML Document with Comple Type Definition, Listion 4-6 XML Schema and XML
Document Document with Complex Type Using <sequence> and <choice>, and Listing 4-7 Complex XML Schema and XML Document with Model Group Definition (I executed last week) too. I wonder: should xs or xsd be used in the XML
Schema Collection of SSMS2012? Please kindly help, clarify this matter and explain the diffirence of using xs and xsd for me.
Thanks in advance,
Scott ChangHi Scott,
Using xs or xsd depends on how you declare the namespace prefix.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="item">
I've posted a very good link in your last question, just in case you might have missed it, please see the below link.
Understanding XML Namespaces
In an XML document we use a namespace prefix to qualify the local names of both elements and attributes . A prefix is really just an abbreviation for the namespace identifier (URI), which is typically quite long. The prefix is first mapped to a namespace
identifier through a namespace declaration. The syntax for a namespace declaration is:
xmlns:<prefix>='<namespace identifier>'
If you have any question, feel free to let me know.
Eric Zhang
TechNet Community Support
Maybe you are looking for
-
How do I get a good line level from the headphone jack from my latest model iMac?
My house is wired for analog sound and have for years used my iPod and iPhone to send an analog signal to my amplifier which drives speakers in multiple rooms. When I try this on my brand new iMac I get a buzz. Is there a setting or patch cable that
-
Any way to get Camcorder content in? USB/TW HD as "bridge"?
Hi all, I am buying a MBA as soon as it gets here, but there is one thing that really bothers me: no FW port means not being able to upload footage from my Camcorder (end edit and share it, therefore...). This is the only thing where the MBA will rea
-
Hi all Can anyone please tell me how to convert a billing document to a pdf format file (code should take billing document number as input and give a file in the pdf format).
-
Garageband 08' songs not opening correctly in GB 11'
I have multiple songs recorded in Garageband 08' on my iMac that I've dropped into the Dropbox application. However, when I open these songs on my Macbook Air that runs Garageband 11', I get the same error message "Audio file NoEffects#11.aif not fou
-
Material Group / Vendor Lookup?
Hello, I'm looking for a way to allow a user to select a material group and then display all the vendors for that material group. I have tried BAPI_SOURCEDETERMIN_GETSOS but it does not return any results. I looked for a table with LIFNR and MATKL wi