Solved

select Distinct  error 8163

Posted on 2004-07-30
7
548 Views
Last Modified: 2008-02-01
     insert into mydatabase..mail_queue ( mailTo, mailType, mailFrom, subject, contentType, mailAux, mailFK, mailFK2, message)
      select  distinct emailAddress, 'regenschirm', @fromAddress, @subject, 'text/html',

Why is this?  It worked fine on SQL SRV 7 but on SQL SERVER 2000 this no longer works!

0
Comment
Question by:bionicblakey
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
  • 2
7 Comments
 
LVL 18

Expert Comment

by:SjoerdVerweij
ID: 11682077
You probably had message as VarChar on SQL7 and as Text on SQL2000, or did not use distinct. Try replacing message with cast(message as varchar(8000)) in your select. If that does not work (messages longer than 8000 characters), you will have to use an intermediate step.

(Why is the distinct there?)

0
 

Author Comment

by:bionicblakey
ID: 11682100
distinct is there so that only one email is sent to a user that may appear more than once inthe db.

The code you see above is the exact same code as i used in sql 7.  Also i copied the exact db to sql 2000

I am not sure what you mean, here is the whole Sp

insert into ourdb..mail_queue ( mailTo, mailType, mailFrom, subject, contentType, mailAux, mailFK, mailFK2, message)
      select  distinct emailAddress, 'regenschirm', @fromAddress, @subject, 'text/html',
            cast(contact_emails.contactID as varchar(8000)), @jobID, @template, null
      from CONTACT_EMAILS join RESULTS on contact_emails.contactID = result
            join CONTACTS on RESULTS.result = CONTACTS.ID
            join GROUP_MEMBERS as GM on GM.contactID = contacts.ID
            join GROUP_REQUIREMENTS as GR on GR.groupID = GM.groupID
            join GROUP_TOKENS as GT on GT.tokenCode = GR.tokenCode
            join GROUP_MEMBERS as U on U.groupID = GT.groupID
      where contact_emails.preferred = 'Y' and contacts.useEmail = 'Y'
            and RESULTS.contactUser = @contactUser
            and (GR.actionCode = 'SEND' or GR.actionCode = 'SUPERSEND')
            and U.contactID = @contactUser
      
0
 
LVL 18

Accepted Solution

by:
SjoerdVerweij earned 500 total points
ID: 11682127
Hmm. One of the @vars must be of Text type then. But, there's a way around that:

insert into ourdb..mail_queue ( mailTo, mailType, mailFrom, subject, contentType, mailAux, mailFK, mailFK2, message)
     select emailAddress, 'regenschirm', @fromAddress, @subject, 'text/html',
          x.contactID, @jobID, @template, null
     from (select distinct emailaddress, contact_emails.contactID
     from CONTACT_EMAILS join RESULTS on contact_emails.contactID = result
          join CONTACTS on RESULTS.result = CONTACTS.ID
          join GROUP_MEMBERS as GM on GM.contactID = contacts.ID
          join GROUP_REQUIREMENTS as GR on GR.groupID = GM.groupID
          join GROUP_TOKENS as GT on GT.tokenCode = GR.tokenCode
          join GROUP_MEMBERS as U on U.groupID = GT.groupID
     where contact_emails.preferred = 'Y' and contacts.useEmail = 'Y'
          and RESULTS.contactUser = @contactUser
          and (GR.actionCode = 'SEND' or GR.actionCode = 'SUPERSEND')
          and U.contactID = @contactUser) as x
0
Creating Instructional Tutorials  

For Any Use & On Any Platform

Contextual Guidance at the moment of need helps your employees/users adopt software o& achieve even the most complex tasks instantly. Boost knowledge retention, software adoption & employee engagement with easy solution.

 
LVL 75

Expert Comment

by:Anthony Perkins
ID: 11682151
>>I am not sure what you mean, here is the whole Sp<<
As SjoerdVerweij has pointed out you cannot have text, ntext or image in a DISTINCT query (in any version of SQL Server).  That means that one of the columns in the Select statement is one of those data types.  I am going to go out on a limb here and guess that it is "emailAddress"
0
 
LVL 75

Expert Comment

by:Anthony Perkins
ID: 11682154
>>One of the @vars must be of Text type then. <<
Good point, I had not thought of that.
0
 

Author Comment

by:bionicblakey
ID: 11682192
i wish it were the emailaddress. but no, it is not.

BSJ
0
 

Author Comment

by:bionicblakey
ID: 11682249
acperkins :   This exact SP worked fine for 3 years using SQL SRV 7. Only until we migrated to SQL 2000 did this error occur.


 SjoerdVerweij : Thanks so much.  That did the trick!
0

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Load balancing is the method of dividing the total amount of work performed by one computer between two or more computers. Its aim is to get more work done in the same amount of time, ensuring that all the users get served faster.
Recently we ran in to an issue while running some SQL jobs where we were trying to process the cubes.  We got an error saying failure stating 'NT SERVICE\SQLSERVERAGENT does not have access to Analysis Services. So this is a way to automate that wit…
Using examples as well as descriptions, and references to Books Online, show the different Recovery Models available in SQL Server and explain, as well as show how full, differential and transaction log backups are performed
Via a live example, show how to backup a database, simulate a failure backup the tail of the database transaction log and perform the restore.

734 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question