@@ -264,55 +264,32 @@ private function queryString($tables)
264264// Has domain.table
265265 if (isset ($ explicitDB [1 ])) {
266266 return <<<SQL
267- SELECT
268- a.name,
269- st.name AS type
270- FROM
271- {$ explicitDB [0 ]}..syscolumns a,
272- {$ explicitDB [0 ]}..systypes b,
273- {$ explicitDB [0 ]}..systypes s,
274- {$ explicitDB [0 ]}..systypes st
275- WHERE
276- a.usertype = b.usertype AND
277- s.usertype = a.usertype AND
278- s.type = st.type AND
279- st.name NOT IN (
280- 'timestamp',
281- 'sysname',
282- 'longsysname',
283- 'nchar',
284- 'nvarchar'
285- ) AND
286- st.usertype < 100 AND
287- object_name (
288- a.id,
289- db_id (' {$ explicitDB [0 ]}')
290- ) = ' {$ explicitDB [1 ]}'
291- SQL ;
267+ SELECT
268+ syscolumns.name,
269+ systypes.name AS type
270+ FROM
271+ {$ explicitDB [0 ]}..syscolumns noholdlock
272+ JOIN
273+ {$ explicitDB [0 ]}..systypes noholdlock ON systypes.usertype = syscolumns.usertype
274+ WHERE
275+ systypes.name NOT IN ('timestamp', 'sysname', 'longsysname', 'nchar', 'nvarchar')
276+ AND systypes.usertype < 100
277+ AND object_name(syscolumns.id, db_id(' {$ explicitDB [0 ]}')) = ' {$ explicitDB [1 ]}'
278+ SQL ;
292279 } else {
293280 return <<<SQL
294- SELECT
295- a.name,
296- st.name AS type
297- FROM
298- syscolumns a,
299- systypes b,
300- systypes s,
301- systypes st
302- WHERE
303- a.usertype = b.usertype AND
304- s.usertype = a.usertype AND
305- s.type = st.type AND
306- st.name NOT IN (
307- 'timestamp',
308- 'sysname',
309- 'longsysname',
310- 'nchar',
311- 'nvarchar'
312- ) AND
313- st.usertype < 100 AND
314- object_name (a.id) = ' {$ tables }'
315- SQL ;
281+ SELECT
282+ syscolumns.name,
283+ systypes.name AS type
284+ FROM
285+ syscolumns
286+ JOIN
287+ systypes ON systypes.usertype = syscolumns.usertype
288+ WHERE
289+ systypes.name NOT IN ('timestamp', 'sysname', 'longsysname', 'nchar', 'nvarchar')
290+ AND systypes.usertype < 100
291+ AND object_name(syscolumns.id) = ' {$ tables }'
292+ SQL ;
316293 }
317294 }
318295
0 commit comments