Wednesday, March 28, 2012
Problem with left join, please help !
are displayed.
There is a record in "cases" with no "casecomments" but it is not displayed
.. please help:
SELECT *
FROM cases a
left join casecomments as b on a.id = b.caseid AND b.lastupdate = (SELECT
MAX(x.lastupdate) FROM casecomments x WHERE x.caseid=a.id)Please provide DDL, sample data and desired results, so we don't have to
guess about these things and so that we provide the right solution.
http://www.aspfaq.com/
(Reverse address to reply.)
"Aleks" <arkark2004@.hotmail.com> wrote in message
news:u0z2W0KKFHA.3928@.TK2MSFTNGP09.phx.gbl...
> I am doing a left join in this query, but only the records that have a
join
> are displayed.
> There is a record in "cases" with no "casecomments" but it is not
displayed
> .. please help:
> SELECT *
> FROM cases a
> left join casecomments as b on a.id = b.caseid AND b.lastupdate = (SELECT
> MAX(x.lastupdate) FROM casecomments x WHERE x.caseid=a.id)
>|||Well, I thought it was a fairly simple issue with the structure of the
query.
SELECT *
FROM cases a
left join casecomments as b on a.id = b.caseid AND b.lastupdate = (SELECT
MAX(x.lastupdate) FROM casecomments x WHERE x.caseid=a.id)
Seems like the left join has some issue because if I have a record in the
cases table and there is no record on the casecomments table with the same
caseid then the record is not displayed, that usually happens with 'inner
join', why would it happen with the statement above if it is a left join ?
A
"Aaron [SQL Server MVP]" <ten.xoc@.dnartreb.noraa> wrote in message
news:O2O9F5KKFHA.2728@.TK2MSFTNGP10.phx.gbl...
> Please provide DDL, sample data and desired results, so we don't have to
> guess about these things and so that we provide the right solution.
> --
> http://www.aspfaq.com/
> (Reverse address to reply.)
>
>
> "Aleks" <arkark2004@.hotmail.com> wrote in message
> news:u0z2W0KKFHA.3928@.TK2MSFTNGP09.phx.gbl...
> join
> displayed
>|||> Well, I thought it was a fairly simple issue with the structure of the
> query.
Too many assumptions. If you can't be bothered to provide DDL and something
other than a word problem describing the solution you're after, I guess that
solution isn't too important to you. Next thread for me.
Please post DDL, sample data and desired results.
See http://www.aspfaq.com/5006 for info.|||Aleks,
Looking at your query, there is no reason why every record from the cases
table should not be displayed... Are you sure the record you are expecting t
o
see is in there? And that the sql you posted is exacttly what you ran ?
Sorry to question that, but what posted seems to me to be inconsistent with
the results you got...
"Aleks" wrote:
> I am doing a left join in this query, but only the records that have a joi
n
> are displayed.
> There is a record in "cases" with no "casecomments" but it is not displaye
d
> ... please help:
> SELECT *
> FROM cases a
> left join casecomments as b on a.id = b.caseid AND b.lastupdate = (SELECT
> MAX(x.lastupdate) FROM casecomments x WHERE x.caseid=a.id)
>
>|||Is not that I can't be bothered, is that I don't know how to do it.
A
"Aaron [SQL Server MVP]" <ten.xoc@.dnartreb.noraa> wrote in message
news:ee0XGPLKFHA.3064@.TK2MSFTNGP12.phx.gbl...
> Too many assumptions. If you can't be bothered to provide DDL and
> something
> other than a word problem describing the solution you're after, I guess
> that
> solution isn't too important to you. Next thread for me.
> --
> Please post DDL, sample data and desired results.
> See http://www.aspfaq.com/5006 for info.
>|||You are right, it was something else, another inner join that should have
been left join, sorry, but thanks for the tip.
A
"CBretana" <cbretana@.areteIndNOSPAM.com> wrote in message
news:ADE383C9-0E7A-4B45-A73A-C849472AD2D6@.microsoft.com...
> Aleks,
> Looking at your query, there is no reason why every record from the
> cases
> table should not be displayed... Are you sure the record you are expecting
> to
> see is in there? And that the sql you posted is exacttly what you ran ?
> Sorry to question that, but what posted seems to me to be inconsistent
> with
> the results you got...
> "Aleks" wrote:
>|||> Is not that I can't be bothered, is that I don't know how to do it.
Did you even LOOK AT http://www.aspfaq.com/5006 ''|||Thank you, I was not aware of that page and you don't have to be so
agressive.
"Aaron [SQL Server MVP]" <ten.xoc@.dnartreb.noraa> wrote in message
news:%23w97lrLKFHA.2396@.TK2MSFTNGP12.phx.gbl...
> Did you even LOOK AT http://www.aspfaq.com/5006 ''
>sql
Problem with left join
I have a query that is supposed to return records and make a left join where
one field is not null, but for some reason is not working properly and
returns the records even though they are null.
SELECT *
FROM cases a
left join activities as w on a.id = w.caseid AND w.Dateinitiated = (Select
MAX(y.Dateinitiated)
From Activities y Where y.caseid = a.id AND y.ActType ='HISTORY' and
y.dateinitiated IS NOT NULL and y.processtep IS NOT NULL)
Any help is greately appreciated.
AleksBetter if you post some ddl, sample data and expected result.
Please provide DDL and sample data.
http://www.aspfaq.com/etiquette.asp?id=5006
AMB
"Aleks" wrote:
> Hi,
> I have a query that is supposed to return records and make a left join whe
re
> one field is not null, but for some reason is not working properly and
> returns the records even though they are null.
> --
> SELECT *
> FROM cases a
> left join activities as w on a.id = w.caseid AND w.Dateinitiated = (Select
> MAX(y.Dateinitiated)
> From Activities y Where y.caseid = a.id AND y.ActType ='HISTORY' and
> y.dateinitiated IS NOT NULL and y.processtep IS NOT NULL)
> --
> Any help is greately appreciated.
> Aleks
>
>|||Aleks,
The reason the query seems to be returnning records from Activities,
where the Dateinitiated column is null, is because you have specified an
Outer Join.
When you specify An Outer Join, Al records from the Outer table are
returned, even when there is no match on the other side. You actually are
NOT returning any data from Activities Table where Dateinitiated column is
null. If you look at those rows, you'll probably notice that all the field
s
from Activities table are null there...
"Aleks" wrote:
> Hi,
> I have a query that is supposed to return records and make a left join whe
re
> one field is not null, but for some reason is not working properly and
> returns the records even though they are null.
> --
> SELECT *
> FROM cases a
> left join activities as w on a.id = w.caseid AND w.Dateinitiated = (Select
> MAX(y.Dateinitiated)
> From Activities y Where y.caseid = a.id AND y.ActType ='HISTORY' and
> y.dateinitiated IS NOT NULL and y.processtep IS NOT NULL)
> --
> Any help is greately appreciated.
> Aleks
>
>
Problem with Large data amounts
I have a dataset with 300,000 records and I'm getting the following error with MS Reporting Services. "An error has occurred during report processing. Exception of type System.OutOfMemoryException was thrown. any help with this would be highly appreciated.
Unfortunately, Reporting Services has some memory limitations in the current (SQL 2K and SQL 2K5). Because we support things like dataset aggregates (you can have sum(x) on the first page of your report), we materialize the entire dataset. Some things you might try:
Do you need the entire data set displayed in the report or could you do some grouping / aggregation in the query?|||I am having a similar problem with large data amounts. My reporting server is a Dual Xeon 3GHz machine with 2.5GB RAM and still has issues.
What I find is that the reportviewer object is not releasing memory after the reports are generated, viewed and closed. It recycles the application several times if I try to do an export to excel.
Is there any way to be sure to dispose of the memory being allocated by the reportviewer? I can generate one report, close it, wait, open another, and the memory allocation just keeps growing and growing.
Any help is appreciated.
|||I seem to be having a similar problem with a Xeon and 4Gig of memory. In my case, after the out of memory error happens, remote connections stop working stating that there is insufficient memory. In other words I can't even run a select statement in Management Studio after it hits the memory error. I have to restart the SQL Service.
HELP!!!
|||First off. A human does not look at 300,000 records. Most of the time I have seen this it has been to export to Excel. When exporting to Excel export as CSV ASCII (although I don't think Excel can handle more that 64,000 records).
Note that this is with records returned, not records in the base table. I go against tables with 150 million records but I only return the data needed.
I suggest looking at design drill through reports to limit the data.
|||Is this still a problem with Reporting Services? We are having a similar problem with .net choking on large data sets and were considering using Reporting Services as an alternative. Is Microsoft an enterprise player or not?
We are required to periodically return several hundred thousand rows from SQL Server. I'm tired of being told that is a design problem. Unfortunately when our client says he needs to print a detail report from his general ledger for his auditor we don't have the luxury of telling him Microsoft doesn't think he needs that large of a report. If he can't get the data he needs from us, he'll be happy to go down the street to get it (read Oracle).
If I can't serialize it through .net or get it out of Reporting Services, how am I supposed to extract large data sets from SQL Server?
Will 64 bit processors and multi-GB ram implementations help?
Thanks.
Problem with Large data amounts
I have a dataset with 300,000 records and I'm getting the following error with MS Reporting Services. "An error has occurred during report processing. Exception of type System.OutOfMemoryException was thrown. any help with this would be highly appreciated.
Unfortunately, Reporting Services has some memory limitations in the current (SQL 2K and SQL 2K5). Because we support things like dataset aggregates (you can have sum(x) on the first page of your report), we materialize the entire dataset. Some things you might try:
Do you need the entire data set displayed in the report or could you do some grouping / aggregation in the query?|||I am having a similar problem with large data amounts. My reporting server is a Dual Xeon 3GHz machine with 2.5GB RAM and still has issues.
What I find is that the reportviewer object is not releasing memory after the reports are generated, viewed and closed. It recycles the application several times if I try to do an export to excel.
Is there any way to be sure to dispose of the memory being allocated by the reportviewer? I can generate one report, close it, wait, open another, and the memory allocation just keeps growing and growing.
Any help is appreciated.
|||I seem to be having a similar problem with a Xeon and 4Gig of memory. In my case, after the out of memory error happens, remote connections stop working stating that there is insufficient memory. In other words I can't even run a select statement in Management Studio after it hits the memory error. I have to restart the SQL Service.
HELP!!!
|||First off. A human does not look at 300,000 records. Most of the time I have seen this it has been to export to Excel. When exporting to Excel export as CSV ASCII (although I don't think Excel can handle more that 64,000 records).
Note that this is with records returned, not records in the base table. I go against tables with 150 million records but I only return the data needed.
I suggest looking at design drill through reports to limit the data.
|||Is this still a problem with Reporting Services? We are having a similar problem with .net choking on large data sets and were considering using Reporting Services as an alternative. Is Microsoft an enterprise player or not?
We are required to periodically return several hundred thousand rows from SQL Server. I'm tired of being told that is a design problem. Unfortunately when our client says he needs to print a detail report from his general ledger for his auditor we don't have the luxury of telling him Microsoft doesn't think he needs that large of a report. If he can't get the data he needs from us, he'll be happy to go down the street to get it (read Oracle).
If I can't serialize it through .net or get it out of Reporting Services, how am I supposed to extract large data sets from SQL Server?
Will 64 bit processors and multi-GB ram implementations help?
Thanks.
sqlProblem with Large data amounts
I have a dataset with 300,000 records and I'm getting the following error with MS Reporting Services. "An error has occurred during report processing. Exception of type System.OutOfMemoryException was thrown. any help with this would be highly appreciated.
Unfortunately, Reporting Services has some memory limitations in the current (SQL 2K and SQL 2K5). Because we support things like dataset aggregates (you can have sum(x) on the first page of your report), we materialize the entire dataset. Some things you might try:
Do you need the entire data set displayed in the report or could you do some grouping / aggregation in the query?|||I am having a similar problem with large data amounts. My reporting server is a Dual Xeon 3GHz machine with 2.5GB RAM and still has issues.
What I find is that the reportviewer object is not releasing memory after the reports are generated, viewed and closed. It recycles the application several times if I try to do an export to excel.
Is there any way to be sure to dispose of the memory being allocated by the reportviewer? I can generate one report, close it, wait, open another, and the memory allocation just keeps growing and growing.
Any help is appreciated.
|||I seem to be having a similar problem with a Xeon and 4Gig of memory. In my case, after the out of memory error happens, remote connections stop working stating that there is insufficient memory. In other words I can't even run a select statement in Management Studio after it hits the memory error. I have to restart the SQL Service.
HELP!!!
|||First off. A human does not look at 300,000 records. Most of the time I have seen this it has been to export to Excel. When exporting to Excel export as CSV ASCII (although I don't think Excel can handle more that 64,000 records).
Note that this is with records returned, not records in the base table. I go against tables with 150 million records but I only return the data needed.
I suggest looking at design drill through reports to limit the data.
|||
Is this still a problem with Reporting Services? We are having a similar problem with .net choking on large data sets and were considering using Reporting Services as an alternative. Is Microsoft an enterprise player or not?
We are required to periodically return several hundred thousand rows from SQL Server. I'm tired of being told that is a design problem. Unfortunately when our client says he needs to print a detail report from his general ledger for his auditor we don't have the luxury of telling him Microsoft doesn't think he needs that large of a report. If he can't get the data he needs from us, he'll be happy to go down the street to get it (read Oracle).
If I can't serialize it through .net or get it out of Reporting Services, how am I supposed to extract large data sets from SQL Server?
Will 64 bit processors and multi-GB ram implementations help?
Thanks.
Problem with Large data amounts
I have a dataset with 300,000 records and I'm getting the following error with MS Reporting Services. "An error has occurred during report processing. Exception of type System.OutOfMemoryException was thrown. any help with this would be highly appreciated.
Unfortunately, Reporting Services has some memory limitations in the current (SQL 2K and SQL 2K5). Because we support things like dataset aggregates (you can have sum(x) on the first page of your report), we materialize the entire dataset. Some things you might try:
Do you need the entire data set displayed in the report or could you do some grouping / aggregation in the query?|||I am having a similar problem with large data amounts. My reporting server is a Dual Xeon 3GHz machine with 2.5GB RAM and still has issues.
What I find is that the reportviewer object is not releasing memory after the reports are generated, viewed and closed. It recycles the application several times if I try to do an export to excel.
Is there any way to be sure to dispose of the memory being allocated by the reportviewer? I can generate one report, close it, wait, open another, and the memory allocation just keeps growing and growing.
Any help is appreciated.
|||I seem to be having a similar problem with a Xeon and 4Gig of memory. In my case, after the out of memory error happens, remote connections stop working stating that there is insufficient memory. In other words I can't even run a select statement in Management Studio after it hits the memory error. I have to restart the SQL Service.
HELP!!!
|||First off. A human does not look at 300,000 records. Most of the time I have seen this it has been to export to Excel. When exporting to Excel export as CSV ASCII (although I don't think Excel can handle more that 64,000 records).
Note that this is with records returned, not records in the base table. I go against tables with 150 million records but I only return the data needed.
I suggest looking at design drill through reports to limit the data.
|||Is this still a problem with Reporting Services? We are having a similar problem with .net choking on large data sets and were considering using Reporting Services as an alternative. Is Microsoft an enterprise player or not?
We are required to periodically return several hundred thousand rows from SQL Server. I'm tired of being told that is a design problem. Unfortunately when our client says he needs to print a detail report from his general ledger for his auditor we don't have the luxury of telling him Microsoft doesn't think he needs that large of a report. If he can't get the data he needs from us, he'll be happy to go down the street to get it (read Oracle).
If I can't serialize it through .net or get it out of Reporting Services, how am I supposed to extract large data sets from SQL Server?
Will 64 bit processors and multi-GB ram implementations help?
Thanks.
problem with joins
Hi
i have 2 tables called locationcode and emp.
tables are having so many records.
suppose the tables having the sample data like this:
locationcode table:
locationcode(field name)
1
2
3
emp table
empno empname locationcode (field names)
----------------------
2344 aaaa 1
2345 bbbb 1
2567 cccc 2
1234 dddd 3
16789 eeee 4
9890 fffff 4
i have to delete records from emp table the locationcode which is not matching with locationcode in locationcode table.
(in this sample data i have to delete records which are having location code as 4 from emp table)
i used joins,but i am not getting.
please help me.
Thanks.
Hello
Use left outer join
select
t1.empno, t1.empname, t1.locationcodefrom emp t1leftouterjoin locationcode t2on t2.locationcode= t1.locationcode
where t2.locationcodeisnull
HTH
|||hi,
i think this query can help you out.
DELETE FROM emp
where locationcode in
(SELECT locationcode from emp e, locationcode lc where e.locationcode <> lc.locationcode)
i've not tried this but i think it will work.
Happy Coding.
regards,
Muppidi.
|||hi,
i think this query can help you out.
DELETE FROM emp
where locationcode in
(SELECT locationcode from emp e, locationcode lc where e.locationcode <> lc.locationcode)
i've not tried this but i think it will work.
Happy Coding.
regards,
Muppidi.
Wednesday, March 21, 2012
Problem with HOST_NAME Function with Linked View
with 50,000 records; and I have a selections table with 50,000 records for
each machine that uses the database (about 25-50). This allows each user to
have their own set of selections.
The selections table has three fields: ID (int), Sel (bit), MachName
(varchar). ID and MachName comprise the primary key.
I have a view that combines the main table and the entries for the
selections table for the current machine (SQL below). The view works fine
when opened in EM and QA. And if I create a pass-through query from my
Access MDB file, the results are displayed fine.
However, if I link the view to the Access MDB file, I get "#Deleted" in
every field of every record (which seems to indicate that the records were
there and then they were gone). However, if I hard-code the machine name
into the same view instead of using HOST_NAME and then relink the view to
the MDB file, the linked view opens fine. Only when I use HOST_NAME as a
parameter in the view is there a problem with it.
Anyone have any idea what's going on here, or have heard of any issues with
HOST_NAME and ODBC linked objects? SQL for the view is below.
Thanks!
Neil
SELECT INVTRY.*, InvtrySelections.Sel, InvtrySelections.MachName
FROM dbo.INVTRY INNER JOIN
dbo.InvtrySelections ON
dbo.INVTRY.ID = dbo.InvtrySelections.ID
WHERE (dbo.InvtrySelections.MachName = HOST_NAME())
Neil wrote:
> I have a view that combines the main table and the entries for the
> selections table for the current machine (SQL below). The view works fine
> when opened in EM and QA. And if I create a pass-through query from my
> Access MDB file, the results are displayed fine.
HOST_NAME() is a T-SQL function. Enterprise Manager, Query Analyzer and
Access Pass-Through querys are direct interfaces to SQL Server and thus
T-SQL
> However, if I link the view to the Access MDB file, I get "#Deleted" in
> every field of every record (which seems to indicate that the records were
> there and then they were gone). However, if I hard-code the machine name
> into the same view instead of using HOST_NAME and then relink the view to
> the MDB file, the linked view opens fine. Only when I use HOST_NAME as a
> parameter in the view is there a problem with it.
Does this not imply that T-SQL cannot construct HOST_NAME() from
Access/Jet SQL?
|||First, you shouldn't crosspost to newsgroups not relevant to your problem.
Second, create a view that will simply select and display the value of
HOST_NAME() and you will you see if there is a problem with it and
SQL-Server 7 and a MDB file.
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF
"Neil" <nospam@.nospam.net> wrote in message
news:lra9f.1731$8c5.1137@.newsread3.news.pas.earthl ink.net...
>I have an Access 2000 MDB file with a SQL 7 back end. I have a main table
>with 50,000 records; and I have a selections table with 50,000 records for
>each machine that uses the database (about 25-50). This allows each user to
>have their own set of selections.
> The selections table has three fields: ID (int), Sel (bit), MachName
> (varchar). ID and MachName comprise the primary key.
> I have a view that combines the main table and the entries for the
> selections table for the current machine (SQL below). The view works fine
> when opened in EM and QA. And if I create a pass-through query from my
> Access MDB file, the results are displayed fine.
> However, if I link the view to the Access MDB file, I get "#Deleted" in
> every field of every record (which seems to indicate that the records were
> there and then they were gone). However, if I hard-code the machine name
> into the same view instead of using HOST_NAME and then relink the view to
> the MDB file, the linked view opens fine. Only when I use HOST_NAME as a
> parameter in the view is there a problem with it.
> Anyone have any idea what's going on here, or have heard of any issues
> with HOST_NAME and ODBC linked objects? SQL for the view is below.
> Thanks!
> Neil
> SELECT INVTRY.*, InvtrySelections.Sel, InvtrySelections.MachName
> FROM dbo.INVTRY INNER JOIN
> dbo.InvtrySelections ON
> dbo.INVTRY.ID = dbo.InvtrySelections.ID
> WHERE (dbo.InvtrySelections.MachName = HOST_NAME())
>
|||Neil (nospam@.nospam.net) writes:
> SELECT INVTRY.*, InvtrySelections.Sel, InvtrySelections.MachName
> FROM dbo.INVTRY INNER JOIN
> dbo.InvtrySelections ON
> dbo.INVTRY.ID = dbo.InvtrySelections.ID
> WHERE (dbo.InvtrySelections.MachName = HOST_NAME())
Now that I see the entire view, I repeat what I said before: make
MachName nvarchar, and put the clustered index on this column.
Erland Sommarskog, SQL Server MVP, esquel@.sommarskog.se
Books Online for SQL Server SP3 at
http://www.microsoft.com/sql/techinf...2000/books.asp
|||Ananda Sim (AnandaSim@.gmail.com.invalid) writes:
> Does this not imply that T-SQL cannot construct HOST_NAME() from
> Access/Jet SQL?
Indeed, the host name must be set through the connection string. I don't
know how it works through Access, but the mechanism is such that the
client tells SQL Server about the name, and lie as much as it want.
Erland Sommarskog, SQL Server MVP, esquel@.sommarskog.se
Books Online for SQL Server SP3 at
http://www.microsoft.com/sql/techinf...2000/books.asp
|||Neil wrote:
> I have an Access 2000 MDB file with a SQL 7 back end. I have a main table
> with 50,000 records; and I have a selections table with 50,000 records for
> each machine that uses the database (about 25-50). This allows each user to
> have their own set of selections.
> The selections table has three fields: ID (int), Sel (bit), MachName
> (varchar). ID and MachName comprise the primary key.
> I have a view that combines the main table and the entries for the
> selections table for the current machine (SQL below). The view works fine
> when opened in EM and QA. And if I create a pass-through query from my
> Access MDB file, the results are displayed fine.
> However, if I link the view to the Access MDB file, I get "#Deleted" in
> every field of every record (which seems to indicate that the records were
> there and then they were gone). However, if I hard-code the machine name
> into the same view instead of using HOST_NAME and then relink the view to
> the MDB file, the linked view opens fine. Only when I use HOST_NAME as a
> parameter in the view is there a problem with it.
> Anyone have any idea what's going on here, or have heard of any issues with
> HOST_NAME and ODBC linked objects? SQL for the view is below.
I've not had any problems with Host_name() as a parameter, as the only
records I retrieve are for my particular machine there is very little
point in returning that column so I never ask the server for it as I
know the value already.
A couple of things you need to know about Access and SQL Server, firstly
bit fields should be made NOT NULL and default to 0 as Access interprets
these as Jet Yes/No columns and treats them accordingly so it expects a
value to be there (In Access/Jet, a Yes/No column cannot be null and
defaults to 0). The results otherwise can be unpredictable.
Secondly, if you have any floating point columns in your data (including
datetime as these are stored as floating point numbers) then you most
probably need a timestamp column as floating point errors can cause the
#Deleted condition you describe.
|||Hello, everyone.
I've made some progress with this strange situation. I played around with
different scenarios of the view with HOST_NAME that won't work when linked
to the MDB file, removing most fields, trying just one table, then the
other, and kept getting the "#Deleted" results. However, I found then when I
didn't assign a logical primary key when I linked the view, the results
displayed fine!
That only makes the situation stranger. But there it is.
In another post here I noted that I had created a test table with a
two-field PK, one of which contained the HOST_NAME value, and created a view
which returned records from this test table, with HOST_NAME() as a parameter
for that field. When I linked that view to the MDB file, selecting the two
PK fields as the logical primary key, it worked fine. So it's not all
logical primary keys that it has problems with.
Neil
"Neil" <nospam@.nospam.net> wrote in message
news:lra9f.1731$8c5.1137@.newsread3.news.pas.earthl ink.net...
>I have an Access 2000 MDB file with a SQL 7 back end. I have a main table
>with 50,000 records; and I have a selections table with 50,000 records for
>each machine that uses the database (about 25-50). This allows each user to
>have their own set of selections.
> The selections table has three fields: ID (int), Sel (bit), MachName
> (varchar). ID and MachName comprise the primary key.
> I have a view that combines the main table and the entries for the
> selections table for the current machine (SQL below). The view works fine
> when opened in EM and QA. And if I create a pass-through query from my
> Access MDB file, the results are displayed fine.
> However, if I link the view to the Access MDB file, I get "#Deleted" in
> every field of every record (which seems to indicate that the records were
> there and then they were gone). However, if I hard-code the machine name
> into the same view instead of using HOST_NAME and then relink the view to
> the MDB file, the linked view opens fine. Only when I use HOST_NAME as a
> parameter in the view is there a problem with it.
> Anyone have any idea what's going on here, or have heard of any issues
> with HOST_NAME and ODBC linked objects? SQL for the view is below.
> Thanks!
> Neil
> SELECT INVTRY.*, InvtrySelections.Sel, InvtrySelections.MachName
> FROM dbo.INVTRY INNER JOIN
> dbo.InvtrySelections ON
> dbo.INVTRY.ID = dbo.InvtrySelections.ID
> WHERE (dbo.InvtrySelections.MachName = HOST_NAME())
>
|||One possible cause for seeing things like #deleted is a missing primary key
or Access is not able to determine which field is the primary key.
You have said in your first post that you have defined a composite primary
key on two field. This is quite possibly the source of your problem: you
should try replacing it with a single field primary key. From past
experience, Access seems to have a lot of trouble with linked tables or
views having composite primary keys.
Also, take a look at the following article; in case it might help you:
http://support.microsoft.com/kb/q209123/
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF
"Neil" <nospam@.nospam.net> wrote in message
news:hFf9f.3901$yX2.1657@.newsread2.news.pas.earthl ink.net...
> "Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
> wrote in message news:uQV0$Ra3FHA.2432@.TK2MSFTNGP10.phx.gbl...
> I wasn't aware that I had done that.
>
> Good point. I created a view that returned the value of HOST_NAME(), and
> it linked fine into the MDB. I also created a new table, gave it a
> two-field PK, and used HOST_NAME() as a parameter for one of the fields in
> a view. That view also linked and displayed records fine. (Didn't do a
> two-table test, which would be similar to what I'm working with. But it
> shows that HOST_NAME() works fine with MDB linked views.)
> Neil
>
>
|||Also, if possible, that a look on the SQL-Server with the Profiler or
activate the ODBC tracing option. This will give you the possibility of
seeing what Access is trying to do.
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF
"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
wrote in message news:uTA0rGd3FHA.2640@.TK2MSFTNGP09.phx.gbl...
> One possible cause for seeing things like #deleted is a missing primary
> key or Access is not able to determine which field is the primary key.
> You have said in your first post that you have defined a composite primary
> key on two field. This is quite possibly the source of your problem: you
> should try replacing it with a single field primary key. From past
> experience, Access seems to have a lot of trouble with linked tables or
> views having composite primary keys.
> Also, take a look at the following article; in case it might help you:
> http://support.microsoft.com/kb/q209123/
> --
> Sylvain Lafontaine, ing.
> MVP - Technologies Virtual-PC
> E-mail: http://cerbermail.com/?QugbLEWINF
>
> "Neil" <nospam@.nospam.net> wrote in message
> news:hFf9f.3901$yX2.1657@.newsread2.news.pas.earthl ink.net...
>
|||Re. the composite primary key, note that in my test I did create a table
with a composite primary key, to simulate the situation, and it worked fine.
I followed up on that in my more recent post in this thread, which shows
that the situation is now even more bizarre.
Regarding changing to a single field primary key, I do not believe that is
possible. The main table has a single-field primary key (int, identity), and
the other table (which has a one-to-one relationship with the main table)
has a dual primary key -- one field corresponding to the main table's
primary key, and the other containing the machine name. That table has to
have both fields in the primary key.
The resulting view can have a one-field or two-field virtual primary key
when linked in access, depending on whether or not I include the machine
name field in the resultset. Seems to me that it's better to include it and
have a two-field primary key, so that Access can determine the record.
Neil
"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
wrote in message news:uTA0rGd3FHA.2640@.TK2MSFTNGP09.phx.gbl...
> One possible cause for seeing things like #deleted is a missing primary
> key or Access is not able to determine which field is the primary key.
> You have said in your first post that you have defined a composite primary
> key on two field. This is quite possibly the source of your problem: you
> should try replacing it with a single field primary key. From past
> experience, Access seems to have a lot of trouble with linked tables or
> views having composite primary keys.
> Also, take a look at the following article; in case it might help you:
> http://support.microsoft.com/kb/q209123/
> --
> Sylvain Lafontaine, ing.
> MVP - Technologies Virtual-PC
> E-mail: http://cerbermail.com/?QugbLEWINF
>
> "Neil" <nospam@.nospam.net> wrote in message
> news:hFf9f.3901$yX2.1657@.newsread2.news.pas.earthl ink.net...
>
Problem with HOST_NAME Function with Linked View
with 50,000 records; and I have a selections table with 50,000 records for
each machine that uses the database (about 25-50). This allows each user to
have their own set of selections.
The selections table has three fields: ID (int), Sel (bit), MachName
(varchar). ID and MachName comprise the primary key.
I have a view that combines the main table and the entries for the
selections table for the current machine (SQL below). The view works fine
when opened in EM and QA. And if I create a pass-through query from my
Access MDB file, the results are displayed fine.
However, if I link the view to the Access MDB file, I get "#Deleted" in
every field of every record (which seems to indicate that the records were
there and then they were gone). However, if I hard-code the machine name
into the same view instead of using HOST_NAME and then relink the view to
the MDB file, the linked view opens fine. Only when I use HOST_NAME as a
parameter in the view is there a problem with it.
Anyone have any idea what's going on here, or have heard of any issues with
HOST_NAME and ODBC linked objects? SQL for the view is below.
Thanks!
Neil
SELECT INVTRY.*, InvtrySelections.Sel, InvtrySelections.MachName
FROM dbo.INVTRY INNER JOIN
dbo.InvtrySelections ON
dbo.INVTRY.ID = dbo.InvtrySelections.ID
WHERE (dbo.InvtrySelections.MachName = HOST_NAME())Neil wrote:
> I have a view that combines the main table and the entries for the
> selections table for the current machine (SQL below). The view works fine
> when opened in EM and QA. And if I create a pass-through query from my
> Access MDB file, the results are displayed fine.
HOST_NAME() is a T-SQL function. Enterprise Manager, Query Analyzer and
Access Pass-Through querys are direct interfaces to SQL Server and thus
T-SQL
> However, if I link the view to the Access MDB file, I get "#Deleted" in
> every field of every record (which seems to indicate that the records were
> there and then they were gone). However, if I hard-code the machine name
> into the same view instead of using HOST_NAME and then relink the view to
> the MDB file, the linked view opens fine. Only when I use HOST_NAME as a
> parameter in the view is there a problem with it.
Does this not imply that T-SQL cannot construct HOST_NAME() from
Access/Jet SQL?|||First, you shouldn't crosspost to newsgroups not relevant to your problem.
Second, create a view that will simply select and display the value of
HOST_NAME() and you will you see if there is a problem with it and
SQL-Server 7 and a MDB file.
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF
"Neil" <nospam@.nospam.net> wrote in message
news:lra9f.1731$8c5.1137@.newsread3.news.pas.earthlink.net...
>I have an Access 2000 MDB file with a SQL 7 back end. I have a main table
>with 50,000 records; and I have a selections table with 50,000 records for
>each machine that uses the database (about 25-50). This allows each user to
>have their own set of selections.
> The selections table has three fields: ID (int), Sel (bit), MachName
> (varchar). ID and MachName comprise the primary key.
> I have a view that combines the main table and the entries for the
> selections table for the current machine (SQL below). The view works fine
> when opened in EM and QA. And if I create a pass-through query from my
> Access MDB file, the results are displayed fine.
> However, if I link the view to the Access MDB file, I get "#Deleted" in
> every field of every record (which seems to indicate that the records were
> there and then they were gone). However, if I hard-code the machine name
> into the same view instead of using HOST_NAME and then relink the view to
> the MDB file, the linked view opens fine. Only when I use HOST_NAME as a
> parameter in the view is there a problem with it.
> Anyone have any idea what's going on here, or have heard of any issues
> with HOST_NAME and ODBC linked objects? SQL for the view is below.
> Thanks!
> Neil
> SELECT INVTRY.*, InvtrySelections.Sel, InvtrySelections.MachName
> FROM dbo.INVTRY INNER JOIN
> dbo.InvtrySelections ON
> dbo.INVTRY.ID = dbo.InvtrySelections.ID
> WHERE (dbo.InvtrySelections.MachName = HOST_NAME())
>|||Neil (nospam@.nospam.net) writes:
> SELECT INVTRY.*, InvtrySelections.Sel, InvtrySelections.MachName
> FROM dbo.INVTRY INNER JOIN
> dbo.InvtrySelections ON
> dbo.INVTRY.ID = dbo.InvtrySelections.ID
> WHERE (dbo.InvtrySelections.MachName = HOST_NAME())
Now that I see the entire view, I repeat what I said before: make
MachName nvarchar, and put the clustered index on this column.
Erland Sommarskog, SQL Server MVP, esquel@.sommarskog.se
Books Online for SQL Server SP3 at
http://www.microsoft.com/sql/techin.../2000/books.asp|||Ananda Sim (AnandaSim@.gmail.com.invalid) writes:
> Does this not imply that T-SQL cannot construct HOST_NAME() from
> Access/Jet SQL?
Indeed, the host name must be set through the connection string. I don't
know how it works through Access, but the mechanism is such that the
client tells SQL Server about the name, and lie as much as it want.
Erland Sommarskog, SQL Server MVP, esquel@.sommarskog.se
Books Online for SQL Server SP3 at
http://www.microsoft.com/sql/techin.../2000/books.asp|||Neil wrote:
> I have an Access 2000 MDB file with a SQL 7 back end. I have a main table
> with 50,000 records; and I have a selections table with 50,000 records for
> each machine that uses the database (about 25-50). This allows each user t
o
> have their own set of selections.
> The selections table has three fields: ID (int), Sel (bit), MachName
> (varchar). ID and MachName comprise the primary key.
> I have a view that combines the main table and the entries for the
> selections table for the current machine (SQL below). The view works fine
> when opened in EM and QA. And if I create a pass-through query from my
> Access MDB file, the results are displayed fine.
> However, if I link the view to the Access MDB file, I get "#Deleted" in
> every field of every record (which seems to indicate that the records were
> there and then they were gone). However, if I hard-code the machine name
> into the same view instead of using HOST_NAME and then relink the view to
> the MDB file, the linked view opens fine. Only when I use HOST_NAME as a
> parameter in the view is there a problem with it.
> Anyone have any idea what's going on here, or have heard of any issues wit
h
> HOST_NAME and ODBC linked objects? SQL for the view is below.
I've not had any problems with Host_name() as a parameter, as the only
records I retrieve are for my particular machine there is very little
point in returning that column so I never ask the server for it as I
know the value already.
A couple of things you need to know about Access and SQL Server, firstly
bit fields should be made NOT NULL and default to 0 as Access interprets
these as Jet Yes/No columns and treats them accordingly so it expects a
value to be there (In Access/Jet, a Yes/No column cannot be null and
defaults to 0). The results otherwise can be unpredictable.
Secondly, if you have any floating point columns in your data (including
datetime as these are stored as floating point numbers) then you most
probably need a timestamp column as floating point errors can cause the
#Deleted condition you describe.|||Obscure footnote:
> any floating point columns in your data (including
> datetime as these are stored as floating point numbers)
SQL Server doesn't store datetime as double. Access does,
and the problem arises because of the rounding error in
the conversion between the Access version and the SQL
Server version, even when values are not 'stored' in Access
at all.
(david)
"Trevor Best" <nospam@.localhost.invalid> wrote in message
news:43656dd0$0$345$da0feed9@.news.zen.co.uk...
> Neil wrote:
.>
> I've not had any problems with Host_name() as a parameter, as the only
> records I retrieve are for my particular machine there is very little
> point in returning that column so I never ask the server for it as I
> know the value already.
> A couple of things you need to know about Access and SQL Server, firstly
> bit fields should be made NOT NULL and default to 0 as Access interprets
> these as Jet Yes/No columns and treats them accordingly so it expects a
> value to be there (In Access/Jet, a Yes/No column cannot be null and
> defaults to 0). The results otherwise can be unpredictable.
> Secondly, if you have any floating point columns in your data (including
> datetime as these are stored as floating point numbers) then you most
> probably need a timestamp column as floating point errors can cause the
> #Deleted condition you describe.|||"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
wrote in message news:uQV0$Ra3FHA.2432@.TK2MSFTNGP10.phx.gbl...
> First, you shouldn't crosspost to newsgroups not relevant to your problem.
I wasn't aware that I had done that.
> Second, create a view that will simply select and display the value of
> HOST_NAME() and you will you see if there is a problem with it and
> SQL-Server 7 and a MDB file.
Good point. I created a view that returned the value of HOST_NAME(), and it
linked fine into the MDB. I also created a new table, gave it a two-field
PK, and used HOST_NAME() as a parameter for one of the fields in a view.
That view also linked and displayed records fine. (Didn't do a two-table
test, which would be similar to what I'm working with. But it shows that
HOST_NAME() works fine with MDB linked views.)
Neil
> --
> Sylvain Lafontaine, ing.
> MVP - Technologies Virtual-PC
> E-mail: http://cerbermail.com/?QugbLEWINF
>
> "Neil" <nospam@.nospam.net> wrote in message
> news:lra9f.1731$8c5.1137@.newsread3.news.pas.earthlink.net...
>|||After I got your note I did go ahead and make MachName nchar, as BOL says
that HOST_NAME() returns that type, and the sample it showed of storing its
return value in a table used an nchar(30) field.
The InvtrySelections table had the PK (ID/MachName) as the clustered index.
I created a second index on MachName alone, and it made it the clustered
index.
With the above two changes, the results were the same. Still getting
"#Deleted".
Neil
"Erland Sommarskog" <esquel@.sommarskog.se> wrote in message
news:Xns970061F02065Yazorman@.127.0.0.1...
> Neil (nospam@.nospam.net) writes:
> Now that I see the entire view, I repeat what I said before: make
> MachName nvarchar, and put the clustered index on this column.
>
> --
> Erland Sommarskog, SQL Server MVP, esquel@.sommarskog.se
> Books Online for SQL Server SP3 at
> http://www.microsoft.com/sql/techin.../2000/books.asp
>|||"Ananda Sim" <AnandaSim@.gmail.com.invalid> wrote in message
news:43653cd2$0$25855$afc38c87@.news.optusnet.com.au...
> Neil wrote:
>
> HOST_NAME() is a T-SQL function. Enterprise Manager, Query Analyzer and
> Access Pass-Through querys are direct interfaces to SQL Server and thus
> T-SQL
>
> Does this not imply that T-SQL cannot construct HOST_NAME() from
> Access/Jet SQL?
In a test, I created a view that returned the HOST_NAME() value, and another
view that used HOST_NAME() as a parameter. Both worked fine when linked to
the MDB file, so the problem's not with T-SQL not being able to construct
HOST_NAME from Jet SQL.
Neil
Problem with HOST_NAME Function with Linked View
with 50,000 records; and I have a selections table with 50,000 records for
each machine that uses the database (about 25-50). This allows each user to
have their own set of selections.
The selections table has three fields: ID (int), Sel (bit), MachName
(varchar). ID and MachName comprise the primary key.
I have a view that combines the main table and the entries for the
selections table for the current machine (SQL below). The view works fine
when opened in EM and QA. And if I create a pass-through query from my
Access MDB file, the results are displayed fine.
However, if I link the view to the Access MDB file, I get "#Deleted" in
every field of every record (which seems to indicate that the records were
there and then they were gone). However, if I hard-code the machine name
into the same view instead of using HOST_NAME and then relink the view to
the MDB file, the linked view opens fine. Only when I use HOST_NAME as a
parameter in the view is there a problem with it.
Anyone have any idea what's going on here, or have heard of any issues with
HOST_NAME and ODBC linked objects? SQL for the view is below.
Thanks!
Neil
SELECT INVTRY.*, InvtrySelections.Sel, InvtrySelections.MachName
FROM dbo.INVTRY INNER JOIN
dbo.InvtrySelections ON
dbo.INVTRY.ID = dbo.InvtrySelections.ID
WHERE (dbo.InvtrySelections.MachName = HOST_NAME())First, you shouldn't crosspost to newsgroups not relevant to your problem.
Second, create a view that will simply select and display the value of
HOST_NAME() and you will you see if there is a problem with it and
SQL-Server 7 and a MDB file.
--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF
"Neil" <nospam@.nospam.net> wrote in message
news:lra9f.1731$8c5.1137@.newsread3.news.pas.earthl ink.net...
>I have an Access 2000 MDB file with a SQL 7 back end. I have a main table
>with 50,000 records; and I have a selections table with 50,000 records for
>each machine that uses the database (about 25-50). This allows each user to
>have their own set of selections.
> The selections table has three fields: ID (int), Sel (bit), MachName
> (varchar). ID and MachName comprise the primary key.
> I have a view that combines the main table and the entries for the
> selections table for the current machine (SQL below). The view works fine
> when opened in EM and QA. And if I create a pass-through query from my
> Access MDB file, the results are displayed fine.
> However, if I link the view to the Access MDB file, I get "#Deleted" in
> every field of every record (which seems to indicate that the records were
> there and then they were gone). However, if I hard-code the machine name
> into the same view instead of using HOST_NAME and then relink the view to
> the MDB file, the linked view opens fine. Only when I use HOST_NAME as a
> parameter in the view is there a problem with it.
> Anyone have any idea what's going on here, or have heard of any issues
> with HOST_NAME and ODBC linked objects? SQL for the view is below.
> Thanks!
> Neil
> SELECT INVTRY.*, InvtrySelections.Sel, InvtrySelections.MachName
> FROM dbo.INVTRY INNER JOIN
> dbo.InvtrySelections ON
> dbo.INVTRY.ID = dbo.InvtrySelections.ID
> WHERE (dbo.InvtrySelections.MachName = HOST_NAME())|||Neil (nospam@.nospam.net) writes:
> SELECT INVTRY.*, InvtrySelections.Sel, InvtrySelections.MachName
> FROM dbo.INVTRY INNER JOIN
> dbo.InvtrySelections ON
> dbo.INVTRY.ID = dbo.InvtrySelections.ID
> WHERE (dbo.InvtrySelections.MachName = HOST_NAME())
Now that I see the entire view, I repeat what I said before: make
MachName nvarchar, and put the clustered index on this column.
--
Erland Sommarskog, SQL Server MVP, esquel@.sommarskog.se
Books Online for SQL Server SP3 at
http://www.microsoft.com/sql/techin.../2000/books.asp|||Neil wrote:
> I have an Access 2000 MDB file with a SQL 7 back end. I have a main table
> with 50,000 records; and I have a selections table with 50,000 records for
> each machine that uses the database (about 25-50). This allows each user to
> have their own set of selections.
> The selections table has three fields: ID (int), Sel (bit), MachName
> (varchar). ID and MachName comprise the primary key.
> I have a view that combines the main table and the entries for the
> selections table for the current machine (SQL below). The view works fine
> when opened in EM and QA. And if I create a pass-through query from my
> Access MDB file, the results are displayed fine.
> However, if I link the view to the Access MDB file, I get "#Deleted" in
> every field of every record (which seems to indicate that the records were
> there and then they were gone). However, if I hard-code the machine name
> into the same view instead of using HOST_NAME and then relink the view to
> the MDB file, the linked view opens fine. Only when I use HOST_NAME as a
> parameter in the view is there a problem with it.
> Anyone have any idea what's going on here, or have heard of any issues with
> HOST_NAME and ODBC linked objects? SQL for the view is below.
I've not had any problems with Host_name() as a parameter, as the only
records I retrieve are for my particular machine there is very little
point in returning that column so I never ask the server for it as I
know the value already.
A couple of things you need to know about Access and SQL Server, firstly
bit fields should be made NOT NULL and default to 0 as Access interprets
these as Jet Yes/No columns and treats them accordingly so it expects a
value to be there (In Access/Jet, a Yes/No column cannot be null and
defaults to 0). The results otherwise can be unpredictable.
Secondly, if you have any floating point columns in your data (including
datetime as these are stored as floating point numbers) then you most
probably need a timestamp column as floating point errors can cause the
#Deleted condition you describe.|||"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
wrote in message news:uQV0$Ra3FHA.2432@.TK2MSFTNGP10.phx.gbl...
> First, you shouldn't crosspost to newsgroups not relevant to your problem.
I wasn't aware that I had done that.
> Second, create a view that will simply select and display the value of
> HOST_NAME() and you will you see if there is a problem with it and
> SQL-Server 7 and a MDB file.
Good point. I created a view that returned the value of HOST_NAME(), and it
linked fine into the MDB. I also created a new table, gave it a two-field
PK, and used HOST_NAME() as a parameter for one of the fields in a view.
That view also linked and displayed records fine. (Didn't do a two-table
test, which would be similar to what I'm working with. But it shows that
HOST_NAME() works fine with MDB linked views.)
Neil
> --
> Sylvain Lafontaine, ing.
> MVP - Technologies Virtual-PC
> E-mail: http://cerbermail.com/?QugbLEWINF
>
> "Neil" <nospam@.nospam.net> wrote in message
> news:lra9f.1731$8c5.1137@.newsread3.news.pas.earthl ink.net...
>>I have an Access 2000 MDB file with a SQL 7 back end. I have a main table
>>with 50,000 records; and I have a selections table with 50,000 records for
>>each machine that uses the database (about 25-50). This allows each user
>>to have their own set of selections.
>>
>> The selections table has three fields: ID (int), Sel (bit), MachName
>> (varchar). ID and MachName comprise the primary key.
>>
>> I have a view that combines the main table and the entries for the
>> selections table for the current machine (SQL below). The view works fine
>> when opened in EM and QA. And if I create a pass-through query from my
>> Access MDB file, the results are displayed fine.
>>
>> However, if I link the view to the Access MDB file, I get "#Deleted" in
>> every field of every record (which seems to indicate that the records
>> were there and then they were gone). However, if I hard-code the machine
>> name into the same view instead of using HOST_NAME and then relink the
>> view to the MDB file, the linked view opens fine. Only when I use
>> HOST_NAME as a parameter in the view is there a problem with it.
>>
>> Anyone have any idea what's going on here, or have heard of any issues
>> with HOST_NAME and ODBC linked objects? SQL for the view is below.
>>
>> Thanks!
>>
>> Neil
>>
>> SELECT INVTRY.*, InvtrySelections.Sel, InvtrySelections.MachName
>> FROM dbo.INVTRY INNER JOIN
>> dbo.InvtrySelections ON
>> dbo.INVTRY.ID = dbo.InvtrySelections.ID
>> WHERE (dbo.InvtrySelections.MachName = HOST_NAME())
>>|||Obscure footnote:
> any floating point columns in your data (including
> datetime as these are stored as floating point numbers)
SQL Server doesn't store datetime as double. Access does,
and the problem arises because of the rounding error in
the conversion between the Access version and the SQL
Server version, even when values are not 'stored' in Access
at all.
(david)
"Trevor Best" <nospam@.localhost.invalid> wrote in message
news:43656dd0$0$345$da0feed9@.news.zen.co.uk...
> Neil wrote:
..>
> I've not had any problems with Host_name() as a parameter, as the only
> records I retrieve are for my particular machine there is very little
> point in returning that column so I never ask the server for it as I
> know the value already.
> A couple of things you need to know about Access and SQL Server, firstly
> bit fields should be made NOT NULL and default to 0 as Access interprets
> these as Jet Yes/No columns and treats them accordingly so it expects a
> value to be there (In Access/Jet, a Yes/No column cannot be null and
> defaults to 0). The results otherwise can be unpredictable.
> Secondly, if you have any floating point columns in your data (including
> datetime as these are stored as floating point numbers) then you most
> probably need a timestamp column as floating point errors can cause the
> #Deleted condition you describe.|||After I got your note I did go ahead and make MachName nchar, as BOL says
that HOST_NAME() returns that type, and the sample it showed of storing its
return value in a table used an nchar(30) field.
The InvtrySelections table had the PK (ID/MachName) as the clustered index.
I created a second index on MachName alone, and it made it the clustered
index.
With the above two changes, the results were the same. Still getting
"#Deleted".
Neil
"Erland Sommarskog" <esquel@.sommarskog.se> wrote in message
news:Xns970061F02065Yazorman@.127.0.0.1...
> Neil (nospam@.nospam.net) writes:
>> SELECT INVTRY.*, InvtrySelections.Sel, InvtrySelections.MachName
>> FROM dbo.INVTRY INNER JOIN
>> dbo.InvtrySelections ON
>> dbo.INVTRY.ID = dbo.InvtrySelections.ID
>> WHERE (dbo.InvtrySelections.MachName = HOST_NAME())
> Now that I see the entire view, I repeat what I said before: make
> MachName nvarchar, and put the clustered index on this column.
>
> --
> Erland Sommarskog, SQL Server MVP, esquel@.sommarskog.se
> Books Online for SQL Server SP3 at
> http://www.microsoft.com/sql/techin.../2000/books.asp|||> I've not had any problems with Host_name() as a parameter, as the only
> records I retrieve are for my particular machine there is very little
> point in returning that column so I never ask the server for it as I know
> the value already.
> A couple of things you need to know about Access and SQL Server, firstly
> bit fields should be made NOT NULL and default to 0 as Access interprets
> these as Jet Yes/No columns and treats them accordingly so it expects a
> value to be there (In Access/Jet, a Yes/No column cannot be null and
> defaults to 0). The results otherwise can be unpredictable.
Yes, the bit field is Not Null and defaults to zero.
> Secondly, if you have any floating point columns in your data (including
> datetime as these are stored as floating point numbers) then you most
> probably need a timestamp column as floating point errors can cause the
> #Deleted condition you describe.
I don't have any floating point columns in my table. However, I went ahead
and added a timestamp field anyway. Same results.
Neil|||Hello, everyone.
I've made some progress with this strange situation. I played around with
different scenarios of the view with HOST_NAME that won't work when linked
to the MDB file, removing most fields, trying just one table, then the
other, and kept getting the "#Deleted" results. However, I found then when I
didn't assign a logical primary key when I linked the view, the results
displayed fine!
That only makes the situation stranger. But there it is.
In another post here I noted that I had created a test table with a
two-field PK, one of which contained the HOST_NAME value, and created a view
which returned records from this test table, with HOST_NAME() as a parameter
for that field. When I linked that view to the MDB file, selecting the two
PK fields as the logical primary key, it worked fine. So it's not all
logical primary keys that it has problems with.
Neil
"Neil" <nospam@.nospam.net> wrote in message
news:lra9f.1731$8c5.1137@.newsread3.news.pas.earthl ink.net...
>I have an Access 2000 MDB file with a SQL 7 back end. I have a main table
>with 50,000 records; and I have a selections table with 50,000 records for
>each machine that uses the database (about 25-50). This allows each user to
>have their own set of selections.
> The selections table has three fields: ID (int), Sel (bit), MachName
> (varchar). ID and MachName comprise the primary key.
> I have a view that combines the main table and the entries for the
> selections table for the current machine (SQL below). The view works fine
> when opened in EM and QA. And if I create a pass-through query from my
> Access MDB file, the results are displayed fine.
> However, if I link the view to the Access MDB file, I get "#Deleted" in
> every field of every record (which seems to indicate that the records were
> there and then they were gone). However, if I hard-code the machine name
> into the same view instead of using HOST_NAME and then relink the view to
> the MDB file, the linked view opens fine. Only when I use HOST_NAME as a
> parameter in the view is there a problem with it.
> Anyone have any idea what's going on here, or have heard of any issues
> with HOST_NAME and ODBC linked objects? SQL for the view is below.
> Thanks!
> Neil
> SELECT INVTRY.*, InvtrySelections.Sel, InvtrySelections.MachName
> FROM dbo.INVTRY INNER JOIN
> dbo.InvtrySelections ON
> dbo.INVTRY.ID = dbo.InvtrySelections.ID
> WHERE (dbo.InvtrySelections.MachName = HOST_NAME())|||One possible cause for seeing things like #deleted is a missing primary key
or Access is not able to determine which field is the primary key.
You have said in your first post that you have defined a composite primary
key on two field. This is quite possibly the source of your problem: you
should try replacing it with a single field primary key. From past
experience, Access seems to have a lot of trouble with linked tables or
views having composite primary keys.
Also, take a look at the following article; in case it might help you:
http://support.microsoft.com/kb/q209123/
--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF
"Neil" <nospam@.nospam.net> wrote in message
news:hFf9f.3901$yX2.1657@.newsread2.news.pas.earthl ink.net...
> "Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
> wrote in message news:uQV0$Ra3FHA.2432@.TK2MSFTNGP10.phx.gbl...
>> First, you shouldn't crosspost to newsgroups not relevant to your
>> problem.
> I wasn't aware that I had done that.
>>
>> Second, create a view that will simply select and display the value of
>> HOST_NAME() and you will you see if there is a problem with it and
>> SQL-Server 7 and a MDB file.
> Good point. I created a view that returned the value of HOST_NAME(), and
> it linked fine into the MDB. I also created a new table, gave it a
> two-field PK, and used HOST_NAME() as a parameter for one of the fields in
> a view. That view also linked and displayed records fine. (Didn't do a
> two-table test, which would be similar to what I'm working with. But it
> shows that HOST_NAME() works fine with MDB linked views.)
> Neil
>
>>
>> --
>> Sylvain Lafontaine, ing.
>> MVP - Technologies Virtual-PC
>> E-mail: http://cerbermail.com/?QugbLEWINF
>>
>>
>> "Neil" <nospam@.nospam.net> wrote in message
>> news:lra9f.1731$8c5.1137@.newsread3.news.pas.earthl ink.net...
>>>I have an Access 2000 MDB file with a SQL 7 back end. I have a main table
>>>with 50,000 records; and I have a selections table with 50,000 records
>>>for each machine that uses the database (about 25-50). This allows each
>>>user to have their own set of selections.
>>>
>>> The selections table has three fields: ID (int), Sel (bit), MachName
>>> (varchar). ID and MachName comprise the primary key.
>>>
>>> I have a view that combines the main table and the entries for the
>>> selections table for the current machine (SQL below). The view works
>>> fine when opened in EM and QA. And if I create a pass-through query from
>>> my Access MDB file, the results are displayed fine.
>>>
>>> However, if I link the view to the Access MDB file, I get "#Deleted" in
>>> every field of every record (which seems to indicate that the records
>>> were there and then they were gone). However, if I hard-code the machine
>>> name into the same view instead of using HOST_NAME and then relink the
>>> view to the MDB file, the linked view opens fine. Only when I use
>>> HOST_NAME as a parameter in the view is there a problem with it.
>>>
>>> Anyone have any idea what's going on here, or have heard of any issues
>>> with HOST_NAME and ODBC linked objects? SQL for the view is below.
>>>
>>> Thanks!
>>>
>>> Neil
>>>
>>> SELECT INVTRY.*, InvtrySelections.Sel, InvtrySelections.MachName
>>> FROM dbo.INVTRY INNER JOIN
>>> dbo.InvtrySelections ON
>>> dbo.INVTRY.ID = dbo.InvtrySelections.ID
>>> WHERE (dbo.InvtrySelections.MachName = HOST_NAME())
>>>
>>
>>|||Also, if possible, that a look on the SQL-Server with the Profiler or
activate the ODBC tracing option. This will give you the possibility of
seeing what Access is trying to do.
--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF
"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
wrote in message news:uTA0rGd3FHA.2640@.TK2MSFTNGP09.phx.gbl...
> One possible cause for seeing things like #deleted is a missing primary
> key or Access is not able to determine which field is the primary key.
> You have said in your first post that you have defined a composite primary
> key on two field. This is quite possibly the source of your problem: you
> should try replacing it with a single field primary key. From past
> experience, Access seems to have a lot of trouble with linked tables or
> views having composite primary keys.
> Also, take a look at the following article; in case it might help you:
> http://support.microsoft.com/kb/q209123/
> --
> Sylvain Lafontaine, ing.
> MVP - Technologies Virtual-PC
> E-mail: http://cerbermail.com/?QugbLEWINF
>
> "Neil" <nospam@.nospam.net> wrote in message
> news:hFf9f.3901$yX2.1657@.newsread2.news.pas.earthl ink.net...
>>
>> "Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
>> wrote in message news:uQV0$Ra3FHA.2432@.TK2MSFTNGP10.phx.gbl...
>>> First, you shouldn't crosspost to newsgroups not relevant to your
>>> problem.
>>
>> I wasn't aware that I had done that.
>>
>>>
>>> Second, create a view that will simply select and display the value of
>>> HOST_NAME() and you will you see if there is a problem with it and
>>> SQL-Server 7 and a MDB file.
>>
>> Good point. I created a view that returned the value of HOST_NAME(), and
>> it linked fine into the MDB. I also created a new table, gave it a
>> two-field PK, and used HOST_NAME() as a parameter for one of the fields
>> in a view. That view also linked and displayed records fine. (Didn't do a
>> two-table test, which would be similar to what I'm working with. But it
>> shows that HOST_NAME() works fine with MDB linked views.)
>>
>> Neil
>>
>>
>>>
>>> --
>>> Sylvain Lafontaine, ing.
>>> MVP - Technologies Virtual-PC
>>> E-mail: http://cerbermail.com/?QugbLEWINF
>>>
>>>
>>> "Neil" <nospam@.nospam.net> wrote in message
>>> news:lra9f.1731$8c5.1137@.newsread3.news.pas.earthl ink.net...
>>>>I have an Access 2000 MDB file with a SQL 7 back end. I have a main
>>>>table with 50,000 records; and I have a selections table with 50,000
>>>>records for each machine that uses the database (about 25-50). This
>>>>allows each user to have their own set of selections.
>>>>
>>>> The selections table has three fields: ID (int), Sel (bit), MachName
>>>> (varchar). ID and MachName comprise the primary key.
>>>>
>>>> I have a view that combines the main table and the entries for the
>>>> selections table for the current machine (SQL below). The view works
>>>> fine when opened in EM and QA. And if I create a pass-through query
>>>> from my Access MDB file, the results are displayed fine.
>>>>
>>>> However, if I link the view to the Access MDB file, I get "#Deleted" in
>>>> every field of every record (which seems to indicate that the records
>>>> were there and then they were gone). However, if I hard-code the
>>>> machine name into the same view instead of using HOST_NAME and then
>>>> relink the view to the MDB file, the linked view opens fine. Only when
>>>> I use HOST_NAME as a parameter in the view is there a problem with it.
>>>>
>>>> Anyone have any idea what's going on here, or have heard of any issues
>>>> with HOST_NAME and ODBC linked objects? SQL for the view is below.
>>>>
>>>> Thanks!
>>>>
>>>> Neil
>>>>
>>>> SELECT INVTRY.*, InvtrySelections.Sel, InvtrySelections.MachName
>>>> FROM dbo.INVTRY INNER JOIN
>>>> dbo.InvtrySelections ON
>>>> dbo.INVTRY.ID = dbo.InvtrySelections.ID
>>>> WHERE (dbo.InvtrySelections.MachName = HOST_NAME())
>>>>
>>>
>>>
>>
>>|||Re. the composite primary key, note that in my test I did create a table
with a composite primary key, to simulate the situation, and it worked fine.
I followed up on that in my more recent post in this thread, which shows
that the situation is now even more bizarre.
Regarding changing to a single field primary key, I do not believe that is
possible. The main table has a single-field primary key (int, identity), and
the other table (which has a one-to-one relationship with the main table)
has a dual primary key -- one field corresponding to the main table's
primary key, and the other containing the machine name. That table has to
have both fields in the primary key.
The resulting view can have a one-field or two-field virtual primary key
when linked in access, depending on whether or not I include the machine
name field in the resultset. Seems to me that it's better to include it and
have a two-field primary key, so that Access can determine the record.
Neil
"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
wrote in message news:uTA0rGd3FHA.2640@.TK2MSFTNGP09.phx.gbl...
> One possible cause for seeing things like #deleted is a missing primary
> key or Access is not able to determine which field is the primary key.
> You have said in your first post that you have defined a composite primary
> key on two field. This is quite possibly the source of your problem: you
> should try replacing it with a single field primary key. From past
> experience, Access seems to have a lot of trouble with linked tables or
> views having composite primary keys.
> Also, take a look at the following article; in case it might help you:
> http://support.microsoft.com/kb/q209123/
> --
> Sylvain Lafontaine, ing.
> MVP - Technologies Virtual-PC
> E-mail: http://cerbermail.com/?QugbLEWINF
>
> "Neil" <nospam@.nospam.net> wrote in message
> news:hFf9f.3901$yX2.1657@.newsread2.news.pas.earthl ink.net...
>>
>> "Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
>> wrote in message news:uQV0$Ra3FHA.2432@.TK2MSFTNGP10.phx.gbl...
>>> First, you shouldn't crosspost to newsgroups not relevant to your
>>> problem.
>>
>> I wasn't aware that I had done that.
>>
>>>
>>> Second, create a view that will simply select and display the value of
>>> HOST_NAME() and you will you see if there is a problem with it and
>>> SQL-Server 7 and a MDB file.
>>
>> Good point. I created a view that returned the value of HOST_NAME(), and
>> it linked fine into the MDB. I also created a new table, gave it a
>> two-field PK, and used HOST_NAME() as a parameter for one of the fields
>> in a view. That view also linked and displayed records fine. (Didn't do a
>> two-table test, which would be similar to what I'm working with. But it
>> shows that HOST_NAME() works fine with MDB linked views.)
>>
>> Neil
>>
>>
>>>
>>> --
>>> Sylvain Lafontaine, ing.
>>> MVP - Technologies Virtual-PC
>>> E-mail: http://cerbermail.com/?QugbLEWINF
>>>
>>>
>>> "Neil" <nospam@.nospam.net> wrote in message
>>> news:lra9f.1731$8c5.1137@.newsread3.news.pas.earthl ink.net...
>>>>I have an Access 2000 MDB file with a SQL 7 back end. I have a main
>>>>table with 50,000 records; and I have a selections table with 50,000
>>>>records for each machine that uses the database (about 25-50). This
>>>>allows each user to have their own set of selections.
>>>>
>>>> The selections table has three fields: ID (int), Sel (bit), MachName
>>>> (varchar). ID and MachName comprise the primary key.
>>>>
>>>> I have a view that combines the main table and the entries for the
>>>> selections table for the current machine (SQL below). The view works
>>>> fine when opened in EM and QA. And if I create a pass-through query
>>>> from my Access MDB file, the results are displayed fine.
>>>>
>>>> However, if I link the view to the Access MDB file, I get "#Deleted" in
>>>> every field of every record (which seems to indicate that the records
>>>> were there and then they were gone). However, if I hard-code the
>>>> machine name into the same view instead of using HOST_NAME and then
>>>> relink the view to the MDB file, the linked view opens fine. Only when
>>>> I use HOST_NAME as a parameter in the view is there a problem with it.
>>>>
>>>> Anyone have any idea what's going on here, or have heard of any issues
>>>> with HOST_NAME and ODBC linked objects? SQL for the view is below.
>>>>
>>>> Thanks!
>>>>
>>>> Neil
>>>>
>>>> SELECT INVTRY.*, InvtrySelections.Sel, InvtrySelections.MachName
>>>> FROM dbo.INVTRY INNER JOIN
>>>> dbo.InvtrySelections ON
>>>> dbo.INVTRY.ID = dbo.InvtrySelections.ID
>>>> WHERE (dbo.InvtrySelections.MachName = HOST_NAME())
>>>>
>>>
>>>
>>
>>|||ODBC tracing might show something. Now sure what Profiler would yield, since
SQL Server seems to be returning the records without any problem.
Neil
"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
wrote in message news:%23sye%23Id3FHA.4076@.TK2MSFTNGP15.phx.gbl...
> Also, if possible, that a look on the SQL-Server with the Profiler or
> activate the ODBC tracing option. This will give you the possibility of
> seeing what Access is trying to do.
> --
> Sylvain Lafontaine, ing.
> MVP - Technologies Virtual-PC
> E-mail: http://cerbermail.com/?QugbLEWINF
>
> "Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
> wrote in message news:uTA0rGd3FHA.2640@.TK2MSFTNGP09.phx.gbl...
>> One possible cause for seeing things like #deleted is a missing primary
>> key or Access is not able to determine which field is the primary key.
>>
>> You have said in your first post that you have defined a composite
>> primary key on two field. This is quite possibly the source of your
>> problem: you should try replacing it with a single field primary key.
>> From past experience, Access seems to have a lot of trouble with linked
>> tables or views having composite primary keys.
>>
>> Also, take a look at the following article; in case it might help you:
>> http://support.microsoft.com/kb/q209123/
>>
>> --
>> Sylvain Lafontaine, ing.
>> MVP - Technologies Virtual-PC
>> E-mail: http://cerbermail.com/?QugbLEWINF
>>
>>
>> "Neil" <nospam@.nospam.net> wrote in message
>> news:hFf9f.3901$yX2.1657@.newsread2.news.pas.earthl ink.net...
>>>
>>> "Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
>>> wrote in message news:uQV0$Ra3FHA.2432@.TK2MSFTNGP10.phx.gbl...
>>>> First, you shouldn't crosspost to newsgroups not relevant to your
>>>> problem.
>>>
>>> I wasn't aware that I had done that.
>>>
>>>>
>>>> Second, create a view that will simply select and display the value of
>>>> HOST_NAME() and you will you see if there is a problem with it and
>>>> SQL-Server 7 and a MDB file.
>>>
>>> Good point. I created a view that returned the value of HOST_NAME(), and
>>> it linked fine into the MDB. I also created a new table, gave it a
>>> two-field PK, and used HOST_NAME() as a parameter for one of the fields
>>> in a view. That view also linked and displayed records fine. (Didn't do
>>> a two-table test, which would be similar to what I'm working with. But
>>> it shows that HOST_NAME() works fine with MDB linked views.)
>>>
>>> Neil
>>>
>>>
>>>>
>>>> --
>>>> Sylvain Lafontaine, ing.
>>>> MVP - Technologies Virtual-PC
>>>> E-mail: http://cerbermail.com/?QugbLEWINF
>>>>
>>>>
>>>> "Neil" <nospam@.nospam.net> wrote in message
>>>> news:lra9f.1731$8c5.1137@.newsread3.news.pas.earthl ink.net...
>>>>>I have an Access 2000 MDB file with a SQL 7 back end. I have a main
>>>>>table with 50,000 records; and I have a selections table with 50,000
>>>>>records for each machine that uses the database (about 25-50). This
>>>>>allows each user to have their own set of selections.
>>>>>
>>>>> The selections table has three fields: ID (int), Sel (bit), MachName
>>>>> (varchar). ID and MachName comprise the primary key.
>>>>>
>>>>> I have a view that combines the main table and the entries for the
>>>>> selections table for the current machine (SQL below). The view works
>>>>> fine when opened in EM and QA. And if I create a pass-through query
>>>>> from my Access MDB file, the results are displayed fine.
>>>>>
>>>>> However, if I link the view to the Access MDB file, I get "#Deleted"
>>>>> in every field of every record (which seems to indicate that the
>>>>> records were there and then they were gone). However, if I hard-code
>>>>> the machine name into the same view instead of using HOST_NAME and
>>>>> then relink the view to the MDB file, the linked view opens fine. Only
>>>>> when I use HOST_NAME as a parameter in the view is there a problem
>>>>> with it.
>>>>>
>>>>> Anyone have any idea what's going on here, or have heard of any issues
>>>>> with HOST_NAME and ODBC linked objects? SQL for the view is below.
>>>>>
>>>>> Thanks!
>>>>>
>>>>> Neil
>>>>>
>>>>> SELECT INVTRY.*, InvtrySelections.Sel, InvtrySelections.MachName
>>>>> FROM dbo.INVTRY INNER JOIN
>>>>> dbo.InvtrySelections ON
>>>>> dbo.INVTRY.ID = dbo.InvtrySelections.ID
>>>>> WHERE (dbo.InvtrySelections.MachName = HOST_NAME())
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>|||It is not a requirement for relationships to be based on primary keys; so
nothing forbid you to a add a new field as the primary key for the other
table and keep the two other fields for your relationship.
Using a machine name as part of an index is also a bad idea: you should
create another table, put these machine names there and use their identity
values for the second table.
--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF
"Neil" <nospam@.nospam.net> wrote in message
news:U7h9f.1895$8c5.1662@.newsread3.news.pas.earthl ink.net...
> Re. the composite primary key, note that in my test I did create a table
> with a composite primary key, to simulate the situation, and it worked
> fine. I followed up on that in my more recent post in this thread, which
> shows that the situation is now even more bizarre.
> Regarding changing to a single field primary key, I do not believe that is
> possible. The main table has a single-field primary key (int, identity),
> and the other table (which has a one-to-one relationship with the main
> table) has a dual primary key -- one field corresponding to the main
> table's primary key, and the other containing the machine name. That table
> has to have both fields in the primary key.
> The resulting view can have a one-field or two-field virtual primary key
> when linked in access, depending on whether or not I include the machine
> name field in the resultset. Seems to me that it's better to include it
> and have a two-field primary key, so that Access can determine the record.
> Neil
>
> "Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
> wrote in message news:uTA0rGd3FHA.2640@.TK2MSFTNGP09.phx.gbl...
>> One possible cause for seeing things like #deleted is a missing primary
>> key or Access is not able to determine which field is the primary key.
>>
>> You have said in your first post that you have defined a composite
>> primary key on two field. This is quite possibly the source of your
>> problem: you should try replacing it with a single field primary key.
>> From past experience, Access seems to have a lot of trouble with linked
>> tables or views having composite primary keys.
>>
>> Also, take a look at the following article; in case it might help you:
>> http://support.microsoft.com/kb/q209123/
>>
>> --
>> Sylvain Lafontaine, ing.
>> MVP - Technologies Virtual-PC
>> E-mail: http://cerbermail.com/?QugbLEWINF
>>
>>
>> "Neil" <nospam@.nospam.net> wrote in message
>> news:hFf9f.3901$yX2.1657@.newsread2.news.pas.earthl ink.net...
>>>
>>> "Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
>>> wrote in message news:uQV0$Ra3FHA.2432@.TK2MSFTNGP10.phx.gbl...
>>>> First, you shouldn't crosspost to newsgroups not relevant to your
>>>> problem.
>>>
>>> I wasn't aware that I had done that.
>>>
>>>>
>>>> Second, create a view that will simply select and display the value of
>>>> HOST_NAME() and you will you see if there is a problem with it and
>>>> SQL-Server 7 and a MDB file.
>>>
>>> Good point. I created a view that returned the value of HOST_NAME(), and
>>> it linked fine into the MDB. I also created a new table, gave it a
>>> two-field PK, and used HOST_NAME() as a parameter for one of the fields
>>> in a view. That view also linked and displayed records fine. (Didn't do
>>> a two-table test, which would be similar to what I'm working with. But
>>> it shows that HOST_NAME() works fine with MDB linked views.)
>>>
>>> Neil
>>>
>>>
>>>>
>>>> --
>>>> Sylvain Lafontaine, ing.
>>>> MVP - Technologies Virtual-PC
>>>> E-mail: http://cerbermail.com/?QugbLEWINF
>>>>
>>>>
>>>> "Neil" <nospam@.nospam.net> wrote in message
>>>> news:lra9f.1731$8c5.1137@.newsread3.news.pas.earthl ink.net...
>>>>>I have an Access 2000 MDB file with a SQL 7 back end. I have a main
>>>>>table with 50,000 records; and I have a selections table with 50,000
>>>>>records for each machine that uses the database (about 25-50). This
>>>>>allows each user to have their own set of selections.
>>>>>
>>>>> The selections table has three fields: ID (int), Sel (bit), MachName
>>>>> (varchar). ID and MachName comprise the primary key.
>>>>>
>>>>> I have a view that combines the main table and the entries for the
>>>>> selections table for the current machine (SQL below). The view works
>>>>> fine when opened in EM and QA. And if I create a pass-through query
>>>>> from my Access MDB file, the results are displayed fine.
>>>>>
>>>>> However, if I link the view to the Access MDB file, I get "#Deleted"
>>>>> in every field of every record (which seems to indicate that the
>>>>> records were there and then they were gone). However, if I hard-code
>>>>> the machine name into the same view instead of using HOST_NAME and
>>>>> then relink the view to the MDB file, the linked view opens fine. Only
>>>>> when I use HOST_NAME as a parameter in the view is there a problem
>>>>> with it.
>>>>>
>>>>> Anyone have any idea what's going on here, or have heard of any issues
>>>>> with HOST_NAME and ODBC linked objects? SQL for the view is below.
>>>>>
>>>>> Thanks!
>>>>>
>>>>> Neil
>>>>>
>>>>> SELECT INVTRY.*, InvtrySelections.Sel, InvtrySelections.MachName
>>>>> FROM dbo.INVTRY INNER JOIN
>>>>> dbo.InvtrySelections ON
>>>>> dbo.INVTRY.ID = dbo.InvtrySelections.ID
>>>>> WHERE (dbo.InvtrySelections.MachName = HOST_NAME())
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>|||david@.epsomdotcomdotau wrote:
> Obscure footnote:
>>any floating point columns in your data (including
>>datetime as these are stored as floating point numbers)
>
> SQL Server doesn't store datetime as double. Access does,
> and the problem arises because of the rounding error in
> the conversion between the Access version and the SQL
> Server version, even when values are not 'stored' in Access
> at all.
Sorry, my bad. It's 2 ints (or Longs in AccessSpeak).|||Neil (nospam@.nospam.net) writes:
> After I got your note I did go ahead and make MachName nchar, as BOL
> says that HOST_NAME() returns that type, and the sample it showed of
> storing its return value in a table used an nchar(30) field.
> The InvtrySelections table had the PK (ID/MachName) as the clustered
> index. I created a second index on MachName alone, and it made it the
> clustered index.
> With the above two changes, the results were the same. Still getting
> "#Deleted".
As I said, I did not really expect that. I more had performance in mind.
But now it occurred to me, that it's a bit of a non-issue for you. To
wit, the rules for implicit conversion are different in SQL 7 and
SQL 2000. The potential performance problem I saw, probably only exists
in SQL 2000. Then again, it's good to be prepared, in case you upgrade
to SQL 2005 one day. :-)
--
Erland Sommarskog, SQL Server MVP, esquel@.sommarskog.se
Books Online for SQL Server SP3 at
http://www.microsoft.com/sql/techin.../2000/books.asp|||You're saying that SQL 2000 performs implicit conversions, but SQL 7
doesn't? That seems like a step backwards for MS. I wish Access didn't
perform implicit conversions.
"Erland Sommarskog" <esquel@.sommarskog.se> wrote in message
news:Xns97011305379Yazorman@.127.0.0.1...
> Neil (nospam@.nospam.net) writes:
>> After I got your note I did go ahead and make MachName nchar, as BOL
>> says that HOST_NAME() returns that type, and the sample it showed of
>> storing its return value in a table used an nchar(30) field.
>>
>> The InvtrySelections table had the PK (ID/MachName) as the clustered
>> index. I created a second index on MachName alone, and it made it the
>> clustered index.
>>
>> With the above two changes, the results were the same. Still getting
>> "#Deleted".
> As I said, I did not really expect that. I more had performance in mind.
> But now it occurred to me, that it's a bit of a non-issue for you. To
> wit, the rules for implicit conversion are different in SQL 7 and
> SQL 2000. The potential performance problem I saw, probably only exists
> in SQL 2000. Then again, it's good to be prepared, in case you upgrade
> to SQL 2005 one day. :-)
> --
> Erland Sommarskog, SQL Server MVP, esquel@.sommarskog.se
> Books Online for SQL Server SP3 at
> http://www.microsoft.com/sql/techin.../2000/books.asp|||Neil (nospam@.nospam.net) writes:
> You're saying that SQL 2000 performs implicit conversions, but SQL 7
> doesn't? That seems like a step backwards for MS. I wish Access didn't
> perform implicit conversions.
That step backwards was taken with SQL 7 from SQL 6.5. A few more implicit
conversions were added in SQL 2005.
Of course, sometimes you do want implicit conversions. It's convenient
to have explicit conversions from character to datetime, or from integer
to bit. But from string to number and numbers to string? That's only bad.
This particular case is about an implicit conversion between varchar
and nvarchar. (or char/nchar), which can occur in both SQL 7 and SQL 2000.
What is different are the rules of what is being converted. In SQL 2000
there is a strict data-type precendence, so a type with low precendence is
always converted to a higher. Thus, a varchar value is converted to
nvarchar, since nvarchar is higher up. I don't know the rules for SQL 7,
as I never worked much with this version, but I know they are different,
and it might be that values are converted rather than columns.
--
Erland Sommarskog, SQL Server MVP, esquel@.sommarskog.se
Books Online for SQL Server SP3 at
http://www.microsoft.com/sql/techin.../2000/books.asp|||(Removed most groups from way too long crosspost list)
On Tue, 1 Nov 2005 08:06:22 +0000 (UTC), Erland Sommarskog wrote:
>What is different are the rules of what is being converted. In SQL 2000
>there is a strict data-type precendence, so a type with low precendence is
>always converted to a higher. Thus, a varchar value is converted to
>nvarchar, since nvarchar is higher up. I don't know the rules for SQL 7,
>as I never worked much with this version, but I know they are different,
>and it might be that values are converted rather than columns.
Hi Erland,
What I understood is that the difference is related to expressions of
the type
column_name = constant (value or expression)
In SQL Server 7.0, the constant would (sometimes? always?) be converted
to match the column's datatype, regardless of datatype precedence rules.
In SQL Server 2000, datatype precedence determines if the column or the
constant has to be converted.
The nice thing about the "old" method was that the implicit conversion
of the constant enabled the optimizer to use an index that was defined
on the column; in SQL Server 2000, the implicit conversion of the column
would preclude the use of that index.
Of course, the price one paid for the index use in the old version was
that the database didn't always do what you'd expect after perusing the
precedence rules.
Best, Hugo
--
(Remove _NO_ and _SPAM_ to get my e-mail address)|||Hugo Kornelis (hugo@.pe_NO_rFact.in_SPAM_fo) writes:
> The nice thing about the "old" method was that the implicit conversion
> of the constant enabled the optimizer to use an index that was defined
> on the column; in SQL Server 2000, the implicit conversion of the column
> would preclude the use of that index.
But what happened if two columns of different data types met?
> Of course, the price one paid for the index use in the old version was
> that the database didn't always do what you'd expect after perusing the
> precedence rules.
As I said, I basically slept over SQL 7, so missed the problem.
Of course, in many cases, these problems could be avoided by not
having implicit conversions at all.
--
Erland Sommarskog, SQL Server MVP, esquel@.sommarskog.se
Books Online for SQL Server SP3 at
http://www.microsoft.com/sql/techin.../2000/books.asp|||On Wed, 2 Nov 2005 22:47:00 +0000 (UTC), Erland Sommarskog wrote:
>Hugo Kornelis (hugo@.pe_NO_rFact.in_SPAM_fo) writes:
>> The nice thing about the "old" method was that the implicit conversion
>> of the constant enabled the optimizer to use an index that was defined
>> on the column; in SQL Server 2000, the implicit conversion of the column
>> would preclude the use of that index.
>But what happened if two columns of different data types met?
Hi Erland,
I'm sorry, but I don't know that.
I've learned what I posted when figuring out why queries that ran
smoothly on SQL 7 were going at snail pace after upgrading. Turned out
that the converting a column instead of converting the constant meant
that a table scan was chosen instead of an index seek.
I've never witnessed similar problems for column to column comparisons,
so I don't know how they were executed.
>> Of course, the price one paid for the index use in the old version was
>> that the database didn't always do what you'd expect after perusing the
>> precedence rules.
>As I said, I basically slept over SQL 7, so missed the problem.
>Of course, in many cases, these problems could be avoided by not
>having implicit conversions at all.
I couldn't agree more!
Best, Hugo
--
(Remove _NO_ and _SPAM_ to get my e-mail address)