Search Results

Search found 4994 results on 200 pages for 'outlook 2000'.

Page 67/200 | < Previous Page | 63 64 65 66 67 68 69 70 71 72 73 74  | Next Page >

  • "Sent on behalf" not appearing when delegates sending mails

    - by New Steve
    Ringo is a delegate of Paul's mailbox in Exchange, but when Ringo sends mail from Paul's mailbox, the recipient sees "Paul" in the sender field, rather than "Paul Sent On Behalf Of Ringo" Paul has set "Editor" permissions for Ringo to his mailbox, and Ringo has been granted "Send on behalf of" permissions in Exchange. Ringo did at one time have "Send As" permissions for Paul's mailbox in Exchange, but this has since been removed. This is also the case for all other delegates to Paul's mailbox. How do I make it so that emails sent by Paul's delegates show the "Sent On Behalf Of" information in the Sender field? Using Exchange Server 2007 and Microsoft Office Outlook 2007

    Read the article

  • HTTP/1.1 503 Service Unavailable Exchange 2003 OWA

    - by toups
    Receiving HTTP/1.1 503 Service Unavailable when trying to access exchange web access. Server 2003 & Exchange 2003 Have tried: Deleting virtual directories and rebuilding them in IIS Restarting Dismounting & mounting the public folder store & mailbox store It's not AppPoolQueueLength Restarting all services (all proper ones are running) Making it use ssl or not (regular http) -- same thing for both Installing IIS & exchange 2003 on a new 2003 box as a new FE server, OWA on that gets same error. Not sure why it's getting a 503... was working without an issue and randomly is stuck at this no matter what; ll users can still successfully connect and use via outlook, only the web access is having issues. Any suggestions would be appreciated.

    Read the article

  • Activesync/OWA Desktop Client

    - by prestomation
    At my company we have Exchange 2k3 with OWA being public, serving up Activesync and webmail. There is no pop3 or imap support from our admins. Outlook 2k3's RPC over HTTP is also disabled Is there a desktop client that can connect to Activesync or OWA? If my ipod touch can connect to activesync, why can't my pc? I'd preferably like a linux daemon that could simply forward emails to my gmail address, but I guess I'll take what I can get. Thanks EDIT: In case it was not clear, our Exchange server is hidden completely behind a firewall, and a second exchange server has only activesync and https ports opened to the world.

    Read the article

  • "Sent on behalf" not appearing when delegates sending mails

    - by New Steve
    Ringo is a delegate of Paul's mailbox in Exchange, but when Ringo sends mail from Paul's mailbox, the recipient sees "Paul" in the sender field, rather than "Paul Sent On Behalf Of Ringo" Paul has set "Editor" permissions for Ringo to his mailbox, and Ringo has been granted "Send on behalf of" permissions in Exchange. Ringo did at one time have "Send As" permissions for Paul's mailbox in Exchange, but this has since been removed. This is also the case for all other delegates to Paul's mailbox. How do I make it so that emails sent by Paul's delegates show the "Sent On Behalf Of" information in the Sender field? Using Exchange Server 2007 and Microsoft Office Outlook 2007

    Read the article

  • Exchange 2003 HTTP Account Error

    - by Ryaner
    We are trying to get one of our users connected to our Exchange 2003 server using the HTTP method as they already have an existing Exchange account on another server. The setup goes through and they appear to get connected fine however none of the subfolders are listed. Instead we get one folder of "Error-Pls file a Bug". The usual Google search just throws up nothing useful. Does anyone know how to fix this? Or has anyone actually gotten Outlook (2003 or 2007) to connect to an Exchange 2003 server?

    Read the article

  • How do I allow end user 'blocked sender lists' to work even if the server manages spam filtering?

    - by Myrddin Emrys
    Client filtering in Outlook 2010 is disabled when the server is managing spam filtering. Unfortunately I have a few high profile users that prefer to spam-block mailing lists rather than unsubscribe, so even though the email is not really spam they are upset that it is coming into their mailbox. As seen here, I am not the first person to wrestle with this issue, and the suggested fix there (setting New-FseExtendedOption –Name CFAllowBlockedSenders –Value true) also failed to work for me. Can anyone provide another possible fix? Thank you kindly.

    Read the article

  • What would cause previously sent emails to be sent again from Exchange the first time someone logs i

    - by Ken Pespisa
    A few users testing our Citrix XenApp service found that several (seemingly random) previously sent emails were sent out immediately after they logged into Outlook via Citrix for the first time. The problem hasn't occurred for them since. After one user had this happen, and we scratched our heads about it thinking it was a fluke, our IT director had this same issue. I guess I'd rule out any PEBKAC issues. I really don't know where to begin troubleshooting this problem. If you have any ideas what could have caused this, I'd appreciate you sharing them, as strange or far-fetched as they may seem :)

    Read the article

  • What does ActiveSync on Android(Nexus One) actually do?

    - by aaronls
    Under the accounts settings of my nexus one I added a Microsoft ActiveSync account and pointed it to our OWA url. It doesn't seem to do anything, and I'm not really sure what it is supposed to do. I have both email sync and contacts sync enabled in the settings, but none of the email I get through outlook shows up on the phone nor are there any contacts added to my contacts list. When I setup the account settings if I type something in wrong it gives me an error, so it is doing something to test the connection, so to some extent I must have it setup right. It just doesn't seem to do anything. What is it actually supposed to do? Where would the contacts and emails show up if it sync'd successfully? How can I test it to ensure I have the correct URL specified?

    Read the article

  • Exchange Server Contact Categories - How to Remove/Update All

    - by ben
    I've been tasked with cleaning up our companies contact database sitting on our Exchange Server 2003. The rub is this database of contacts has been neglected for the past couple of years and is now a bit messy. My issue is I have say a person named 'Bob Smith', and Bob is listed in multiple categories, 'Students' and 'Student'. I would really like to remove the 'Student' category from Bob and anyone else out there that has the same category. My question is, is there an easy way to edit the master category lists for contacts on the exchange server? I feel like I am missing something simple here since if I were playing with the categories that I use, to say organize email its very easy to do so, but I can't seem to find the proper way to do it for categories that are up on the server. I'm attempting to work through Outlook 2007 and Exchange 2003. Any insight would be very helpful as I really don't want to change 8000+ contacts by hand.

    Read the article

  • How can I set Out-Of-Office in a shared mailbox

    - by balexandre
    I would want to set the out-of-office automatic response to all emails that arrive to our [email protected]. currently in the Outlook, I only have one mailbox (the user mailbox) but it has 2 shared mailboxes setup. I have tried to create a Rule that says: for all email received on account [email protected] forward to user [email protected] and make that user to set up the Out-of-office message, but it simply did not work, and I suspect that the rules only apply to the user account and not the shared account... How can I set Out-Of-Office in this shared mailbox ?

    Read the article

  • assign, not toggle, category

    - by Hemal Pandya
    The Home/Categorize option in ribbon on Outlook 2010 toggles categories. If a group of mails is selected where some of the mails already have the selected category assigned then the action removes the category from those mails and assigns to the rest. I view mails grouped by conversation and would like to repeatedly assign a category to all mails in the group. I can clear all categories before assigning, but that would work only if the mails have only one category assigned. Ideally, I would like to change the behavior of the existing button. If not, a different menu option or shortcut. Is there a way to do either of this?

    Read the article

  • Daylight Savings Time and Microsoft Exchange woes

    - by Scott
    Ever since the switch from Standard Time to Daylight Time, the time on our e-mail messages has been ahead by one hour. This symptom has me wondering if the cause is improper configuration of daylight savings settings. Since we're in a client/server environment, the clients synchronize with the server, and the server synchronizes with Boulder, Colorado. If I set both the server and the clients to automatically switch to daylight savings, the clients seem to regard the server as being set to Standard Time and set themselves an hour ahead of it, which is really two hours ahead. Should the server switch to daylight savings and the clients follow along on their next synchronization, or should the server stay on Standard Time and the clients switch over? The system clock on the Exchange Server is currently displaying the correct time. How do I get the e-mail messages to display the correct time in Outlook?

    Read the article

  • No Question mark suddenly É instead. Why?

    - by Xavierjazz
    Windows xp3. This happens occasionally. Today it happened in a calendar item in outlook 2003. As you can see from the title here, the question mark is working here (firefox). I am typing and suddenly the question mark is replaced by this character, É and I have no idea why. Can anyone answer this? I hope this is an appropriate site for this question. Thanks a lot.

    Read the article

  • archive all messages account on exchange 2003 receiving multiple copies

    - by aeolist
    Hello everyone I am using microsoft exchange 2003 on windows 2003 small business server. For the past month or so, the archiver account has been receiving multiple copies (about 15 or so) of each and every email. edit: All copies share the same Message ID. The machine that hosts exchange is updated religiously and an antivirus scan is run on a daily basis. So would anyone please have any ideas about how to deal with this and furthermore, how i would be able to delete the multiple copies of emails from outlook 2003 inbox. I will edit the entry, answering any questions or updating on my efforts Thanks in advance

    Read the article

  • Vacation scheduler/viewer

    - by Norfeldt
    I'm looking for a solution that allows multiple persons to put plan and notify their vacation by putting it in their electronic calendar and invite a dedicated "robot" email. On the other side I should be able to get a quick overview of the vacation for each person and do a print out that allows me to put it on a board. Example: John puts his winter vacation for week 7 into his calendar and invite [email protected]. Ben does the same thing for week 4 and 5 and invites [email protected]. Dilbert host the [email protected] and prints out and overview for the next 3 months. Each person's vacation is either stated by name or/and color on the print out. I would like to do the thing with standard business software like Outlook 2010 without installing too many softwares. But at the same time it should be easy and quick to make the print outs without too much fiddling Am I dreaming ?

    Read the article

  • How to archive Exchange mailboxes remotely?

    - by amyassin
    We have an environment that is based on an Active Directory domain (running Windows Server 2003 SP2), an internal email system using Exchange Server 2003 (internal mailbox, nothing online), and the clients run a mixture of MS Outlook 2007&2010, with the majority running 2007. Recently we noticed that Exchange server is taking so much space for mailboxes. We are examining some solutions to reduce space, and it seems that we could make use of the archiving feature to archive older messages. I can set the auto-archive option manually for every individual user, but is there any other easier way to automate that task? Is there any feature in exchange server or active directory domain that enables setting that as a kind of policy or something similar, or a script to be scheduled to run by all users?

    Read the article

  • Activesync/OWA Desktop Client

    - by prestomation
    At my company we have Exchange 2k3 with OWA being public, serving up Activesync and webmail. There is no pop3 or imap support from our admins. Outlook 2k3's RPC over HTTP is also disabled Is there a desktop client that can connect to Activesync or OWA? If my ipod touch can connect to activesync, why can't my pc? I'd preferably like a linux daemon that could simply forward emails to my gmail address, but I guess I'll take what I can get. Thanks EDIT: In case it was not clear, our Exchange server is hidden completely behind a firewall, and a second exchange server has only activesync and https ports opened to the world.

    Read the article

  • Error When Trying to Exchange Encrypted Emails with Sender Outside Domain

    - by LucidLuniz
    I have an end user who is trying to exchange encrypted messages with a person outside of our company domain. When receiving emails from the user they receive a message that says: Signed By: (There were errors displaying the signers of this message, click on the signature icon for more details.) However, when you click on the signature icon it says: The digital signature on this message is Valid and Trusted. Then when you look at the "Message Security Properties" it shows two layers, each with a green checkmark beside them. The layers are presented as below: Subject: Digital Signature Layer It also has: Description: OK: Signed message The end result with all of this is that when the user on my side tries to send this user an encrypted message it says: Microsoft Outlook had problems encrypting this message because the following recipients had missing or invalid certificates, or conflicting or unsupported encryption capabilities: Continue will encrypt and send the message but the listed recipients may not be able to read it. However, the only options you are actually given is "Send Unencrypted" and "CanceL" (Continue is grayed out). If anybody can assist I would greatly appreciate it!

    Read the article

  • VBA - Instead of ActiveExplorer.Selection to set folder, explicitly set folder path

    - by Mike
    Sub MoveItems() Dim Messages As Selection Dim Msg As MailItem Dim NS As NameSpace Set NS = Application.GetNamespace("MAPI") Set Messages = ActiveExplorer.Selection If Messages.Count = 0 Then Exit Sub End If For Each Msg In Messages Msg.Move NS.Folders("Personal Folders").Folders("SavedMail") Next End Sub This code will move all email messages from the currently selected folder in outlook to another folder (SavedMail). I would like to edit the code so that instead of using the currently selected folder as the source for the messages, there would be a hard-coded folder - something like Set Messages = NS.Folders("Personal Folders").Folders("Moved"). I'm a VBA rookie and tried just replacing the Set Messages line with this which resulted in a Run-time error '13': Type mismatch which I think refers to a mismatch of the Dim Messages and the Set Messages commands. I've tried using different Dim definitions with no luck. I'm guessing that someone who knows VBA will see the way to do this right away. Any help would be greatly appreciated. Thanks.

    Read the article

  • How can I unify my email, calendar and tasks (2 exchange accounts + 1 gmail)

    - by Assaf Stone
    This is my situation: I work as a consultant, and thus work out of multiple computers: my work-laptop a desktop at my primary client my desktop at home an android smartphone an android tablet Likewise, I have multiple accounts: A Microsoft Exchange (2010 AFAIK) account A Microsoft Exchange (2007 AFAIK) account A gmail account The most important thing I need is the ability to have events in one calendar affect the free / busy status of all other accounts (so that if I am busy on Monday 9am with an event from my employer's account, it will show that time as busy in my client's account, and in the gmail account. Second thing I need is a unified view of all of my accounts' info: Appointments, email, tasks, and contacts (in that order of importance). I've already tried outlook synchronization tools such as gSyncit, to sync both exchange accounts with gmail, but this creates a mess when updating appointments (deleted appointments sometimes return, timestamps revert). Is there perhaps some way to at least synchronize the free/busy state in a way that all of my calendar apps / accounts will look there to see if I can be invited? Just solving that would be well worth my while. Thanks, Assaf

    Read the article

  • Why can't email clients create rules for moving dates like "yesterday"?

    - by Morgan
    I've never seen an email client that I could easily create a rule to do something like "Move messages from yesterday to a folder?" Is there some esoteric reason why this would be difficult? I know I can easily create rules around specific dates, but that isn't the same thing by a long shot; am I missing something? In Outlook 2010 I can create search folders that do sort of this type of thing, but you can't create rules around a search folder... seems like either I am missing something major, or this is terribly short-sided.

    Read the article

  • Keep IMAP messages locally when deleted remotely

    - by user74328
    I use my email from my phone and my computer via IMAP. I want to set something up so that if I delete a message via my phone, my computer will still keep the message locally. For example, assume I leave my computer on, with a synchronize interval of 5 minutes. I want to be able to send something from my phone, wait 5 minutes to be sure my computer has downloaded the item from the Sent folder, then delete it from the IMAP sent folder via my phone, but have the computer at home keep it's copy. Is this possible with any readily available email clients out there? I have Thunderbird and Outlook at the moment, but would be willing to learn a new interface for this feature. How can I accomplish this?

    Read the article

  • Cannot open mailbox

    - by AdamL
    Ive got a server running Windows Server 2012 and Exchange 2013 on my local domain. Ive got the mailboxes setup and can send/receive emails fine when using OWA. If i try to open the mailbox using Outlook 2010, I get the below error If i try to expand the folder, i get the same message but am still able to use OWA. When I try to run a send/receive, I get the below error: After a bit of researching on the web, people suggest that the profile is corrupt. I have recreated the profile and tried again but still same error. Another post has suggested that the issue is DNS and client PCs should be able to resolve autodiscover.domain.local and server.domain.local to the IP of the server. This is fine on my network. Every user has got the same issue and I am struggling to identify what is causing the fault. Advise appreciated.

    Read the article

  • How do I know if I need to backup locally stored emails?

    - by Sometimes
    I am moving a friend's website and emails from the current server to a new one. I don't have much experience working with migrating emails and in the past when moving servers all the emails have disappeared from the users local inbox, eg. MS Outlook. To make my question more clear, How do I know if I have to backup the emails before moving server? as I know sometimes they are stored locally and sometimes they are not. And, how do I know if the emails will remain on the user's machine once I move the information from server to server?

    Read the article

  • When is a SQL function not a function?

    - by Rob Farley
    Should SQL Server even have functions? (Oh yeah – this is a T-SQL Tuesday post, hosted this month by Brad Schulz) Functions serve an important part of programming, in almost any language. A function is a piece of code that is designed to return something, as opposed to a piece of code which isn’t designed to return anything (which is known as a procedure). SQL Server is no different. You can call stored procedures, even from within other stored procedures, and you can call functions and use these in other queries. Stored procedures might query something, and therefore ‘return data’, but a function in SQL is considered to have the type of the thing returned, and can be used accordingly in queries. Consider the internal GETDATE() function. SELECT GETDATE(), SomeDatetimeColumn FROM dbo.SomeTable; There’s no logical difference between the field that is being returned by the function and the field that’s being returned by the table column. Both are the datetime field – if you didn’t have inside knowledge, you wouldn’t necessarily be able to tell which was which. And so as developers, we find ourselves wanting to create functions that return all kinds of things – functions which look up values based on codes, functions which do string manipulation, and so on. But it’s rubbish. Ok, it’s not all rubbish, but it mostly is. And this isn’t even considering the SARGability impact. It’s far more significant than that. (When I say the SARGability aspect, I mean “because you’re unlikely to have an index on the result of some function that’s applied to a column, so try to invert the function and query the column in an unchanged manner”) I’m going to consider the three main types of user-defined functions in SQL Server: Scalar Inline Table-Valued Multi-statement Table-Valued I could also look at user-defined CLR functions, including aggregate functions, but not today. I figure that most people don’t tend to get around to doing CLR functions, and I’m going to focus on the T-SQL-based user-defined functions. Most people split these types of function up into two types. So do I. Except that most people pick them based on ‘scalar or table-valued’. I’d rather go with ‘inline or not’. If it’s not inline, it’s rubbish. It really is. Let’s start by considering the two kinds of table-valued function, and compare them. These functions are going to return the sales for a particular salesperson in a particular year, from the AdventureWorks database. CREATE FUNCTION dbo.FetchSales_inline(@salespersonid int, @orderyear int) RETURNS TABLE AS  RETURN (     SELECT e.LoginID as EmployeeLogin, o.OrderDate, o.SalesOrderID     FROM Sales.SalesOrderHeader AS o     LEFT JOIN HumanResources.Employee AS e     ON e.EmployeeID = o.SalesPersonID     WHERE o.SalesPersonID = @salespersonid     AND o.OrderDate >= DATEADD(year,@orderyear-2000,'20000101')     AND o.OrderDate < DATEADD(year,@orderyear-2000+1,'20000101') ) ; GO CREATE FUNCTION dbo.FetchSales_multi(@salespersonid int, @orderyear int) RETURNS @results TABLE (     EmployeeLogin nvarchar(512),     OrderDate datetime,     SalesOrderID int     ) AS BEGIN     INSERT @results (EmployeeLogin, OrderDate, SalesOrderID)     SELECT e.LoginID, o.OrderDate, o.SalesOrderID     FROM Sales.SalesOrderHeader AS o     LEFT JOIN HumanResources.Employee AS e     ON e.EmployeeID = o.SalesPersonID     WHERE o.SalesPersonID = @salespersonid     AND o.OrderDate >= DATEADD(year,@orderyear-2000,'20000101')     AND o.OrderDate < DATEADD(year,@orderyear-2000+1,'20000101')     ;     RETURN END ; GO You’ll notice that I’m being nice and responsible with the use of the DATEADD function, so that I have SARGability on the OrderDate filter. Regular readers will be hoping I’ll show what’s going on in the execution plans here. Here I’ve run two SELECT * queries with the “Show Actual Execution Plan” option turned on. Notice that the ‘Query cost’ of the multi-statement version is just 2% of the ‘Batch cost’. But also notice there’s trickery going on. And it’s nothing to do with that extra index that I have on the OrderDate column. Trickery. Look at it – clearly, the first plan is showing us what’s going on inside the function, but the second one isn’t. The second one is blindly running the function, and then scanning the results. There’s a Sequence operator which is calling the TVF operator, and then calling a Table Scan to get the results of that function for the SELECT operator. But surely it still has to do all the work that the first one is doing... To see what’s actually going on, let’s look at the Estimated plan. Now, we see the same plans (almost) that we saw in the Actuals, but we have an extra one – the one that was used for the TVF. Here’s where we see the inner workings of it. You’ll probably recognise the right-hand side of the TVF’s plan as looking very similar to the first plan – but it’s now being called by a stack of other operators, including an INSERT statement to be able to populate the table variable that the multi-statement TVF requires. And the cost of the TVF is 57% of the batch! But it gets worse. Let’s consider what happens if we don’t need all the columns. We’ll leave out the EmployeeLogin column. Here, we see that the inline function call has been simplified down. It doesn’t need the Employee table. The join is redundant and has been eliminated from the plan, making it even cheaper. But the multi-statement plan runs the whole thing as before, only removing the extra column when the Table Scan is performed. A multi-statement function is a lot more powerful than an inline one. An inline function can only be the result of a single sub-query. It’s essentially the same as a parameterised view, because views demonstrate this same behaviour of extracting the definition of the view and using it in the outer query. A multi-statement function is clearly more powerful because it can contain far more complex logic. But a multi-statement function isn’t really a function at all. It’s a stored procedure. It’s wrapped up like a function, but behaves like a stored procedure. It would be completely unreasonable to expect that a stored procedure could be simplified down to recognise that not all the columns might be needed, but yet this is part of the pain associated with this procedural function situation. The biggest clue that a multi-statement function is more like a stored procedure than a function is the “BEGIN” and “END” statements that surround the code. If you try to create a multi-statement function without these statements, you’ll get an error – they are very much required. When I used to present on this kind of thing, I even used to call it “The Dangers of BEGIN and END”, and yes, I’ve written about this type of thing before in a similarly-named post over at my old blog. Now how about scalar functions... Suppose we wanted a scalar function to return the count of these. CREATE FUNCTION dbo.FetchSales_scalar(@salespersonid int, @orderyear int) RETURNS int AS BEGIN     RETURN (         SELECT COUNT(*)         FROM Sales.SalesOrderHeader AS o         LEFT JOIN HumanResources.Employee AS e         ON e.EmployeeID = o.SalesPersonID         WHERE o.SalesPersonID = @salespersonid         AND o.OrderDate >= DATEADD(year,@orderyear-2000,'20000101')         AND o.OrderDate < DATEADD(year,@orderyear-2000+1,'20000101')     ); END ; GO Notice the evil words? They’re required. Try to remove them, you just get an error. That’s right – any scalar function is procedural, despite the fact that you wrap up a sub-query inside that RETURN statement. It’s as ugly as anything. Hopefully this will change in future versions. Let’s have a look at how this is reflected in an execution plan. Here’s a query, its Actual plan, and its Estimated plan: SELECT e.LoginID, y.year, dbo.FetchSales_scalar(p.SalesPersonID, y.year) AS NumSales FROM (VALUES (2001),(2002),(2003),(2004)) AS y (year) CROSS JOIN Sales.SalesPerson AS p LEFT JOIN HumanResources.Employee AS e ON e.EmployeeID = p.SalesPersonID; We see here that the cost of the scalar function is about twice that of the outer query. Nicely, the query optimizer has worked out that it doesn’t need the Employee table, but that’s a bit of a red herring here. There’s actually something way more significant going on. If I look at the properties of that UDF operator, it tells me that the Estimated Subtree Cost is 0.337999. If I just run the query SELECT dbo.FetchSales_scalar(281,2003); we see that the UDF cost is still unchanged. You see, this 0.0337999 is the cost of running the scalar function ONCE. But when we ran that query with the CROSS JOIN in it, we returned quite a few rows. 68 in fact. Could’ve been a lot more, if we’d had more salespeople or more years. And so we come to the biggest problem. This procedure (I don’t want to call it a function) is getting called 68 times – each one between twice as expensive as the outer query. And because it’s calling it in a separate context, there is even more overhead that I haven’t considered here. The cheek of it, to say that the Compute Scalar operator here costs 0%! I know a number of IT projects that could’ve used that kind of costing method, but that’s another story that I’m not going to go into here. Let’s look at a better way. Suppose our scalar function had been implemented as an inline one. Then it could have been expanded out like a sub-query. It could’ve run something like this: SELECT e.LoginID, y.year, (SELECT COUNT(*)     FROM Sales.SalesOrderHeader AS o     LEFT JOIN HumanResources.Employee AS e     ON e.EmployeeID = o.SalesPersonID     WHERE o.SalesPersonID = p.SalesPersonID     AND o.OrderDate >= DATEADD(year,y.year-2000,'20000101')     AND o.OrderDate < DATEADD(year,y.year-2000+1,'20000101')     ) AS NumSales FROM (VALUES (2001),(2002),(2003),(2004)) AS y (year) CROSS JOIN Sales.SalesPerson AS p LEFT JOIN HumanResources.Employee AS e ON e.EmployeeID = p.SalesPersonID; Don’t worry too much about the Scan of the SalesOrderHeader underneath a Nested Loop. If you remember from plenty of other posts on the matter, execution plans don’t push the data through. That Scan only runs once. The Index Spool sucks the data out of it and populates a structure that is used to feed the Stream Aggregate. The Index Spool operator gets called 68 times, but the Scan only once (the Number of Executions property demonstrates this). Here, the Query Optimizer has a full picture of what’s being asked, and can make the appropriate decision about how it accesses the data. It can simplify it down properly. To get this kind of behaviour from a function, we need it to be inline. But without inline scalar functions, we need to make our function be table-valued. Luckily, that’s ok. CREATE FUNCTION dbo.FetchSales_inline2(@salespersonid int, @orderyear int) RETURNS table AS RETURN (SELECT COUNT(*) as NumSales     FROM Sales.SalesOrderHeader AS o     LEFT JOIN HumanResources.Employee AS e     ON e.EmployeeID = o.SalesPersonID     WHERE o.SalesPersonID = @salespersonid     AND o.OrderDate >= DATEADD(year,@orderyear-2000,'20000101')     AND o.OrderDate < DATEADD(year,@orderyear-2000+1,'20000101') ); GO But we can’t use this as a scalar. Instead, we need to use it with the APPLY operator. SELECT e.LoginID, y.year, n.NumSales FROM (VALUES (2001),(2002),(2003),(2004)) AS y (year) CROSS JOIN Sales.SalesPerson AS p LEFT JOIN HumanResources.Employee AS e ON e.EmployeeID = p.SalesPersonID OUTER APPLY dbo.FetchSales_inline2(p.SalesPersonID, y.year) AS n; And now, we get the plan that we want for this query. All we’ve done is tell the function that it’s returning a table instead of a single value, and removed the BEGIN and END statements. We’ve had to name the column being returned, but what we’ve gained is an actual inline simplifiable function. And if we wanted it to return multiple columns, it could do that too. I really consider this function to be superior to the scalar function in every way. It does need to be handled differently in the outer query, but in many ways it’s a more elegant method there too. The function calls can be put amongst the FROM clause, where they can then be used in the WHERE or GROUP BY clauses without fear of calling the function multiple times (another horrible side effect of functions). So please. If you see BEGIN and END in a function, remember it’s not really a function, it’s a procedure. And then fix it. @rob_farley

    Read the article

< Previous Page | 63 64 65 66 67 68 69 70 71 72 73 74  | Next Page >