Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 SELECT возвращает 100 строк  [new]
irinika
Member

Откуда:
Сообщений: 20
Выполняю запрос к linked серверу Server1:
SELECT *
FROM OPENQUERY(Server1,
'SELECT COUNT* FROM Table1 Where TagName=''Name1'' AND DateTime >= DATEADD(hh, -1, GETDATE()) and DateTime <= GETDATE()')
Запрос возвращает 100 строк.

Выполняю запрос:
SELECT *
FROM OPENQUERY(Server1,
'SELECT * FROM Table1 Where TagName=''Name1'' AND DateTime >= DATEADD(hh, -2, GETDATE()) and DateTime <= GETDATE()')
Все равно возвращает 100 строк, хотя в реале их больше, т.к. данные пишутся с интервалом 10 сек.

Как увеличить число возвращаемых строк. Пробовала вначале ставить SET ROWCOUNT 150, не помогает.
10 июн 09, 09:09    [7283906]     Ответить | Цитировать Сообщить модератору
 Re: SELECT возвращает 100 строк  [new]
Starlex
Member

Откуда: С.-Петербург
Сообщений: 1169
irinika,

Расширить временной диапазон. Если вы выбираете данные за последние 2 часа, а они пишутся через фиксированный промежуток времени 10с, то количество строк будет одинаковым.
10 июн 09, 10:35    [7284259]     Ответить | Цитировать Сообщить модератору
 Re: SELECT возвращает 100 строк  [new]
Starlex
Member

Откуда: С.-Петербург
Сообщений: 1169
Сорри, в 1-м запросе через час. Тогда не знаю, попробуйте если возможно сделать такие же запросы без linked.
10 июн 09, 10:38    [7284280]     Ответить | Цитировать Сообщить модератору
 Re: SELECT возвращает 100 строк  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
irinika
Выполняю запрос к linked серверу Server1:
SELECT *
FROM OPENQUERY(Server1,
'SELECT COUNT* FROM Table1 Where TagName=''Name1'' AND DateTime >= DATEADD(hh, -1, GETDATE()) and DateTime <= GETDATE()')
Запрос возвращает 100 строк.

Выполняю запрос:
SELECT *
FROM OPENQUERY(Server1,
'SELECT * FROM Table1 Where TagName=''Name1'' AND DateTime >= DATEADD(hh, -2, GETDATE()) and DateTime <= GETDATE()')
Все равно возвращает 100 строк, хотя в реале их больше, т.к. данные пишутся с интервалом 10 сек.

Как увеличить число возвращаемых строк. Пробовала вначале ставить SET ROWCOUNT 150, не помогает.


сколько вернет запрос?

SELECT *
FROM OPENQUERY(Server1, 
    'SELECT (*) FROM Table1 Where TagName=''Name1'' AND DateTime >= DATEADD(hh, -2, GETDATE()) and DateTime <= GETDATE()')
10 июн 09, 10:48    [7284343]     Ответить | Цитировать Сообщить модератору
 Re: SELECT возвращает 100 строк  [new]
irinika
Member

Откуда:
Сообщений: 20
Winnipuh


сколько вернет запрос?

SELECT *
FROM OPENQUERY(Server1, 
    'SELECT (*) FROM Table1 Where TagName=''Name1'' AND DateTime >= DATEADD(hh, -2, GETDATE()) and DateTime <= GETDATE()')


Server: Msg 7321, Level 16, State 2, Line 1
An error occurred while preparing a query for execution against OLE DB provider 'INSQL'.
[OLE/DB provider returned message: Incorrect syntax near '*'.]
10 июн 09, 15:33    [7286275]     Ответить | Цитировать Сообщить модератору
 Re: SELECT возвращает 100 строк  [new]
linke
Member

Откуда: Питер
Сообщений: 1401
irinika,

Скобки у звездочки уберите.
10 июн 09, 15:37    [7286304]     Ответить | Цитировать Сообщить модератору
 Re: SELECT возвращает 100 строк  [new]
irinika
Member

Откуда:
Сообщений: 20
Starlex
Сорри, в 1-м запросе через час. Тогда не знаю, попробуйте если возможно сделать такие же запросы без linked.


Если делать такой запрос непосредственно на linked сервере, то проблема решается использованием SET ROWCOUNT 150. Но есть необходимость в использовании именно linked сервера.
Надеюсь, понятно объяснила.
10 июн 09, 15:37    [7286306]     Ответить | Цитировать Сообщить модератору
 Re: SELECT возвращает 100 строк  [new]
irinika
Member

Откуда:
Сообщений: 20
linke
irinika,

Скобки у звездочки уберите.


Тогда возвращает только 100 строк.
10 июн 09, 15:38    [7286311]     Ответить | Цитировать Сообщить модератору
 Re: SELECT возвращает 100 строк  [new]
linke
Member

Откуда: Питер
Сообщений: 1401
irinika
Выполняю запрос к linked серверу Server1:
SELECT *
FROM OPENQUERY(Server1,
'SELECT COUNT* FROM Table1 Where TagName=''Name1'' AND DateTime >= DATEADD(hh, -1, GETDATE()) and DateTime <= GETDATE()')
Запрос возвращает 100 строк.

Выполняю запрос:
SELECT *
FROM OPENQUERY(Server1,
'SELECT * FROM Table1 Where TagName=''Name1'' AND DateTime >= DATEADD(hh, -2, GETDATE()) and DateTime <= GETDATE()')
Все равно возвращает 100 строк, хотя в реале их больше, т.к. данные пишутся с интервалом 10 сек.

Как увеличить число возвращаемых строк. Пробовала вначале ставить SET ROWCOUNT 150, не помогает.


Чудес то не бывает. Уверены что у всех записей TagName="Name1"?
10 июн 09, 15:40    [7286317]     Ответить | Цитировать Сообщить модератору
 Re: SELECT возвращает 100 строк  [new]
linke
Member

Откуда: Питер
Сообщений: 1401
linke,

SELECT *
FROM OPENQUERY(Server1, 
    'SELECT * FROM Table1 Where  DateTime >= DATEADD(hh, -2, GETDATE()) and DateTime <= GETDATE()')
Сколько записей?


SELECT *
FROM OPENQUERY(Server1, 
    'SELECT * FROM Table1 Where  DateTime >= DATEADD(hh, -1, GETDATE()) and DateTime <= GETDATE()')
Сколько записей?
10 июн 09, 15:41    [7286325]     Ответить | Цитировать Сообщить модератору
 Re: SELECT возвращает 100 строк  [new]
irinika
Member

Откуда:
Сообщений: 20
linke
linke,

SELECT *
FROM OPENQUERY(Server1, 
    'SELECT * FROM Table1 Where  DateTime >= DATEADD(hh, -2, GETDATE()) and DateTime <= GETDATE()')
Сколько записей?


100

linke

SELECT *
FROM OPENQUERY(Server1, 
    'SELECT * FROM Table1 Where  DateTime >= DATEADD(hh, -1, GETDATE()) and DateTime <= GETDATE()')
Сколько записей?


100
10 июн 09, 17:11    [7286904]     Ответить | Цитировать Сообщить модератору
 Re: SELECT возвращает 100 строк  [new]
irinika
Member

Откуда:
Сообщений: 20
linke

Чудес то не бывает. Уверены что у всех записей TagName="Name1"?


Уверена.
10 июн 09, 17:12    [7286913]     Ответить | Цитировать Сообщить модератору
 Re: SELECT возвращает 100 строк  [new]
linke
Member

Откуда: Питер
Сообщений: 1401
irinika,

Тогда уж и сколько записей
SELECT * FROM Table1
10 июн 09, 17:15    [7286932]     Ответить | Цитировать Сообщить модератору
 Re: SELECT возвращает 100 строк  [new]
irinika
Member

Откуда:
Сообщений: 20
linke
irinika,

Тогда уж и сколько записей
SELECT * FROM Table1


SELECT * FROM Table1 WHERE TagName = 'Name1'
100 записей, причем только за последний час.

SELECT * FROM Table1
Could not execute query against OLE DB provider 'INSQL'.
[OLE/DB provider returned message: InSQL did not receive a WHERE clause from SQL Server. If one was specified, refer to the InSQL OLE DB documentation]
Т.е. в данном случае обязательно использование WHERE.
10 июн 09, 17:22    [7286995]     Ответить | Цитировать Сообщить модератору
 Re: SELECT возвращает 100 строк  [new]
linke
Member

Откуда: Питер
Сообщений: 1401
irinika,

SELECT * FROM Table1 where 1=1
10 июн 09, 17:25    [7287017]     Ответить | Цитировать Сообщить модератору
 Re: SELECT возвращает 100 строк  [new]
GSerg
Member

Откуда: Магадан
Сообщений: 205
У вас в используемом инструменте обращения к серверу не стоит галочка а-ля "Выбирать только первые X записей"?
10 июн 09, 20:26    [7287679]     Ответить | Цитировать Сообщить модератору
 Re: SELECT возвращает 100 строк  [new]
Vlad_developer
Guest
А что мешает сделать запрос:

SELECT  * FROM  Linked_Server.dbo.Table1 
          Where TagName='Name1' AND 
                    DateTime >= DATEADD(hh, -1, GETDATE()) and 
                   DateTime <= GETDATE())

?
10 июн 09, 22:12    [7287915]     Ответить | Цитировать Сообщить модератору
 Re: SELECT возвращает 100 строк  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5499
Блог
Для начала - сделать
select count(*) from ....
чтобы понять, в чем проблема - в условии или в ограничении на число записей.
10 июн 09, 22:34    [7287948]     Ответить | Цитировать Сообщить модератору
 Re: SELECT возвращает 100 строк  [new]
irinika
Member

Откуда:
Сообщений: 20
GSerg
У вас в используемом инструменте обращения к серверу не стоит галочка а-ля "Выбирать только первые X записей"?

Не совсем поняла, где может стоять галочка? Использую Query Analyzer.
11 июн 09, 08:56    [7288324]     Ответить | Цитировать Сообщить модератору
 Re: SELECT возвращает 100 строк  [new]
irinika
Member

Откуда:
Сообщений: 20
DeColo®es
Для начала - сделать
select count(*) from ....
чтобы понять, в чем проблема - в условии или в ограничении на число записей.


SELECT *
FROM OPENQUERY(Server1,
'SELECT COUNT(*) FROM Table1 WHERE TagName = ''TagName1''')

100 rows
11 июн 09, 08:59    [7288327]     Ответить | Цитировать Сообщить модератору
 Re: SELECT возвращает 100 строк  [new]
irinika
Member

Откуда:
Сообщений: 20
Vlad_developer
А что мешает сделать запрос:

SELECT  * FROM  Linked_Server.dbo.Table1 
          Where TagName='Name1' AND 
                    DateTime >= DATEADD(hh, -1, GETDATE()) and 
                   DateTime <= GETDATE())

?

Пробовала. Результат:
Server: Msg 208, Level 16, State 1, Line 1
Invalid object name 'Linked_Server.dbo.Table1'.
11 июн 09, 09:02    [7288336]     Ответить | Цитировать Сообщить модератору
 Re: SELECT возвращает 100 строк  [new]
irinika
Member

Откуда:
Сообщений: 20
linke
irinika,

SELECT * FROM Table1 where 1=1


SET ROWCOUNT 150
SELECT * FROM OPENQUERY(Server1, 'SELECT * FROM Table1 WHERE 1=1')

Результат:
150 строк, соответствующих времени на 1 час меньше текущего.
11 июн 09, 09:07    [7288345]     Ответить | Цитировать Сообщить модератору
 Re: SELECT возвращает 100 строк  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5499
Блог
irinika
SELECT *
FROM OPENQUERY(Server1,
'SELECT COUNT(*) FROM Table1 WHERE TagName = ''TagName1''')

100 rows
Вообще-то, должен возвращать одну строку...
11 июн 09, 09:42    [7288489]     Ответить | Цитировать Сообщить модератору
 Re: SELECT возвращает 100 строк  [new]
irinika
Member

Откуда:
Сообщений: 20
DeColo®es
irinika
SELECT *
FROM OPENQUERY(Server1,
'SELECT COUNT(*) FROM Table1 WHERE TagName = ''TagName1''')

100 rows
Вообще-то, должен возвращать одну строку...


Сорри, неправильно написала

-----------
100

(1 row(s) affected)
11 июн 09, 10:09    [7288616]     Ответить | Цитировать Сообщить модератору
 Re: SELECT возвращает 100 строк  [new]
MsDatabaseru
Member

Откуда: Hobby.MsDatabase.ru
Сообщений: 10937
возможно вы неправомерно используете
SET ROWCOUNT 150

попробуйте
SET ROWCOUNT 0

SET ROWCOUNT 150 устанавливает что в результате обработки запроса будет обработано не более 150 строк. если среди них 50 не попали под условие where то он вернет 100.


SET ROWCOUNT устанавливает число обрабатываемых строк а не число возвращаемых
11 июн 09, 10:27    [7288731]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить