Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 spXMLBulkLoad и relationship ПРОШУ ПОМОЩИ (внешний ключь)  [new]
Diver_stv
Member

Откуда: Ставрополь
Сообщений: 10
Имеется XML
<?xml version="1.0" encoding="WINDOWS-1251"?>
<LEVESLIST>
 <item CODE="1" NAME="Стационар. I уровень (краевой)" TYPE_KOEF="1" TYPE_LEVEL="1" KOEF="1,15" DATE_BEGIN="2013-01-01" DATE_END="">
  <MO_LIST>
   <item1 ID_PODR="637"/>
  </MO_LIST>
 </item>
 <item CODE="1" NAME="Стационар. I уровень (краевой)" TYPE_KOEF="1" TYPE_LEVEL="1" KOEF="1,15" DATE_BEGIN="2013-01-01" DATE_END="">
  <MO_LIST>
   <item1 ID_PODR="638"/>
  </MO_LIST>
 </item>
</LEVESLIST>


к ней написал схему XSD
<?xml version="1.0"?>
<xs:schema id="LEVESLIST" 
xmlns="" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:ms="urn:schemas-microsoft-com:mapping-schema">

	<xs:annotation>
		<xs:appinfo>
			<ms:relationship name="S-MO" parent="risGB_SK008" 
			parent-key="rowid" child="risGB_SK008_MO_LIST" child-key="rowid_sk008" />
		</xs:appinfo>
	</xs:annotation>



<xs:element name="LEVESLIST" ms:is-constant="1" >
              <xs:complexType>
                     <xs:sequence>
                            <xs:element name="item" ms:relation="risGB_SK008" ms:key-fields="rowid"  >
                                   <xs:complexType>
                                          <xs:sequence>
                                                 <xs:element name="MO_LIST" ms:is-constant="1"  maxOccurs="unbounded" >
                                                        <xs:complexType>
                                                               <xs:sequence>
                                                                      <xs:element name="item1" ms:relationship="S-MO"  ms:relation="risGB_SK008_MO_LIST" ms:key-fields="rowid_sk008" >
                                                                             <xs:complexType>
                                                                                     <xs:attribute name="ID_PODR" type="xs:string" ms:field="ID_PODR" ms:datatype="varchar(50)"/>
                                                                                </xs:complexType>
                                                                         </xs:element>
                                                                  </xs:sequence>
                                                           </xs:complexType>
                                                    </xs:element>
                                             </xs:sequence>

            <xs:attribute name="CODE" type="xs:string" ms:field="CODE" ms:datatype="varchar(50)"/>
            <xs:attribute name="NAME" type="xs:string" ms:field="NAME" ms:datatype="varchar(50)" />
            <xs:attribute name="TYPE_KOEF" type="xs:string" ms:field="TYPE_KOEF" ms:datatype="varchar(50)"/>
            <xs:attribute name="TYPE_LEVEL" type="xs:string" ms:field="TYPE_LEVEL" ms:datatype="varchar(50)"/>
            <xs:attribute name="KOEF" type="xs:string" ms:field="KOEF" ms:datatype="varchar(50)"/>
            <xs:attribute name="DATE_BEGIN" type="xs:string" ms:field="DATE_BEGIN" ms:datatype="varchar(50)" />
            <xs:attribute name="DATE_END" type="xs:string" ms:field="DATE_END" ms:datatype="varchar(50)" />

                                      </xs:complexType>
                               </xs:element>
                        </xs:sequence>
                 </xs:complexType>
          </xs:element>
   </xs:schema>

 


также на SQL созданы две таблицы

*******1 таблица

CREATE TABLE [dbo].[risGB_SK008](
	[rowid] [uniqueidentifier] ROWGUIDCOL  NOT NULL CONSTRAINT [DF_risGB_SK008_rowid]  DEFAULT (newsequentialid()),
	[code] [varchar](500) NULL,
	[NAME] [varchar](500) NULL,
......
	[DATE_END] [varchar](500) COLLATE NULL,
 CONSTRAINT [PK_risGB_SK008] PRIMARY KEY CLUSTERED 
(
	[rowid] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

*******2 таблица

CREATE TABLE [dbo].[risGB_SK008_MO_LIST](
	[rowid] [uniqueidentifier] ROWGUIDCOL  NOT NULL CONSTRAINT [DF_risGB_SK008_MO_LIST_rowid]  DEFAULT (newsequentialid()),
	[rowid_sk008] [uniqueidentifier] NULL,
	[ID_PODR] [varchar](500)  NULL,
 CONSTRAINT [PK_risGB_SK008_MO_LIST] PRIMARY KEY CLUSTERED 
(
	[rowid] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

ALTER TABLE [dbo].[risGB_SK008_MO_LIST]  WITH CHECK ADD  CONSTRAINT [S-MO] FOREIGN KEY([rowid_sk008])
REFERENCES [dbo].[risGB_SK008] ([rowid])
ON UPDATE CASCADE
ON DELETE CASCADE



для подъема использую скрипт sql
exec dbo.spXMLBulkLoad 'SK008.xml', 'SK008.xsd','имя базы'


СОБСТВЕННО ВОПРОС.

Поднимается ОТЛИЧНО , но с одним НО rowid_sk008 = NULL

т.е. как то не так отрабатывает relationship или key-fields

ЧТО НЕ ТАК Я НАРИСОВАЛ в СХЕМЕ XSD ???

зы: Сколько лет читаю ваш форум. но это мое первое сообщение - не критикуйте если что не так
16 май 13, 15:12    [14306014]     Ответить | Цитировать Сообщить модератору
 Re: spXMLBulkLoad и relationship ПРОШУ ПОМОЩИ (внешний ключь)  [new]
Diver_stv
Member

Откуда: Ставрополь
Сообщений: 10
Добавлю что на INT ключах , все работает НОРМАЛЬНО, ну уж очень хочется использовать все таки GUID
16 май 13, 16:11    [14306497]     Ответить | Цитировать Сообщить модератору
 Re: spXMLBulkLoad и relationship ПРОШУ ПОМОЩИ (внешний ключь)  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Найди мой ответ на форуме про ROWGUIDCOL и докажи что он не подходит.
16 май 13, 23:31    [14308750]     Ответить | Цитировать Сообщить модератору
 Re: spXMLBulkLoad и relationship ПРОШУ ПОМОЩИ (внешний ключь)  [new]
Diver_stv
Member

Откуда: Ставрополь
Сообщений: 10
Mnior,

Я так понял, что если хош ГУИД то пиши на сапорт MS

Но, я так и не понял У ВАС есть решение на использование связей через guid ???
NIIIK
В целом если бы я получал этот здоровый ХМЛ как переменную, то я бы смог сгенерировать значения при выборке из него методом nodes при помощи row_number(), dense_rank и т. п. костылей, но мне бы хотелось получить "сгенерированное базой значение" (причём не newid(), а именно newsequentialid())


применение ROWGUIDCOL на ключе дочери, я не представляю как :(
17 май 13, 09:30    [14309407]     Ответить | Цитировать Сообщить модератору
 Re: spXMLBulkLoad и relationship ПРОШУ ПОМОЩИ (внешний ключь)  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
14110363
Diver_stv
Я так понял, что если хош ГУИД то пиши на сапорт MS
Написали?
Так и будем скидывать друг на друга?
Не зрелое общество.
Diver_stv
У ВАС есть решение на использование связей через guid
Я предлагал и другие подходы.
Mnior
Ну и вообще наверно в большинстве случаев (внешних данных, 95%) данные грузятся всегда в промежуточные таблы, а потом переливаются в нужную родную структуру. Это я даже не говорю про всякие партишины, которые частенько применяются в таких задачах.
Чем вас не устраивает?
17 май 13, 23:23    [14314733]     Ответить | Цитировать Сообщить модератору
 Re: spXMLBulkLoad и relationship ПРОШУ ПОМОЩИ (внешний ключь)  [new]
Diver_stv
Member

Откуда: Ставрополь
Сообщений: 10
Mnior,

Нет писать мелкомягким не собираюсь.

В принципе я уже переделал , на int
По сути ТЗ это "пред" загрузка справочных данных.
По факту все ровно клеить из них рабочие таблицы, для послед использования.

СПАСИБО. за отклик!.
18 май 13, 10:46    [14315621]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить