Tuesday, September 14, 2010

SL802 - Dynamic change color on a row of grid, based on some cell value

Dynamic change color on a row of grid, based on some cell value

January 21st, 2010Leave a commentGo to comments

This is considered by some people as Holy Grail of Syteline Form Personalization.

Here is what we want to do.  In "Time Phased Inventory" form, we want to change the color to yellow for those rows that is PO.

First, we need to create a new form script method, called SetPOColor()

Sub SetPOColor()
Dim i as Integer
Dim j as Integer
Dim sReference As String
Dim sRef3 As String
Dim sRef4 As String
Dim oSupDem As IWSIDOCollection

oSupDem = ThisForm.PrimaryIDOCollection.GetSubCollection("SLSupDems", -1)
j = oSupDem.GetNumEntries

'    MsgBox("j = " + CStr(j))

For i = 1 To j

sReference = ThisForm.Components("SLSupDemsGrid").GetGridValueByColumnName(i, "SLSupDemsReferenceSubGridCol")

sRef3 = Mid(sReference, 1, 3)
sRef4 = Mid(sReference, 1, 4)
If sRef3 = "PO " Or sRef4 = "XPO " Then
ThisForm.Components("SLSupDemsGrid").SetGridRowColColor(i, 0, "255,255,0″, "")
End If
Next i
ThisForm.Components("SLSupDemsGrid").ForceRepaint
End Sub

Secondly, we create a new event handler for event "StdObjectSelectCurrentCompleted", to call the above form script method SetPOColor().

Done.  Now here we are:

 

SL802 Right Click Menu

Right Click Menu

 

Each component in Syteline form can have its own right click menu, and this right

Syteline screen shoot

click menu is customizable.

See the sample, the “Ship To” field has a standard right click menu, with “Add”, “Detail”, “Find” and “Help” menu items.

If you look into the component property of “Ship To” field, you can see the “Right Click Menu” property is blank.   But this property is inheriting from the component class: CustSeq.  In there, the right click menu defined to be StdDetailsAddFind.

There are list of the pre-exist right click menu you can use, such as “StdAddFind”, “StdHelp” and such.

You can also modify or create a new right click menu by go into the “Shortcut Menu Properties” dialog box.

image

Over there, you just need to define the “Menu Item/Caption” and the “Event to Generate” for each of this menu item.

image

 

 

SL802 - Assigning field value in a Syteline Form, based on another field value entered. (1)

Assigning field value in a Syteline Form, based on another field value entered. (1)

 

In Syteline form, quite often, you would need to assign some field value, base on another field value entered.

Business case:

Let say in Customer Order, for certain payment terms, you would not allow partial shipment.  So in the CO header form, when user select certain payment term, you want the system automatically uncheck the "Ship Partial" check box.

Syteline Technical Components:

Inline Script, Event Handler

Solution

In Syteline 7 & 8, there is quite a few differ ways to accomplish this.  The first one we are going to discuss here is to use Inline Script.

1)      In Customer Order Form, for form component: TermCodeEdit, add a data change event: TermChange.  And the event handler will call an Inline Script

2)      The Inline Script:

Option Explicit On

Option Strict On

Imports System

Imports Microsoft.VisualBasic

Imports Mongoose.IDO.Protocol

Imports Mongoose.Scripting

Namespace SyteLine.GlobalScripts

Public Class EvHandler_TermChange_0

Inherits GlobalScript

Sub Main()

if ThisForm.PrimaryIDOCollection.GetCurrentObjectProperty("TermsCode") = "128″ then

ThisForm.PrimaryIDOCollection.SetCurrentObjectPropertyPlusModifyRefresh _

("ShipPartial", "0″)

end if

ReturnValue = "0″

End Sub

End Class

End Namespace

This script will assign the ShipPartial to 0, when user select TermsCode = 128.

 

Monday, September 13, 2010

SL8.02 Change the sorting in primary collection grid

Change the sorting in primary collection grid

Sep 13, 2010

The out of box Syteline missed some of the detail carelessly.  For example, the Grid view for RMA is sorted by RMA date ascending.  So it shows the oldest RMA up front and you are seeing those years old closed RMAs.

Syteline Application Case

Change the sorting of Grid view in RMA form, to show the latest RMA up front.

Syteline Technical Component

Form, Primary Collection, Collection Property

Customization Solution

This is pretty easy to change.  Go to Edit mod, in the form collection property, change the Order by to “RmaNum Desc”.  Done.

Syteline RMA

 

Wednesday, January 13, 2010

Thursday, July 30, 2009

Search Text in a Sub Procedure in SQL Server

Find Text in sub procedures SO.Type = ‘P’ means Procedure, other system object types are:

P – Procedures

FN – Scalar-Valued Functions

TF – Table-valued functions

V – Views

D – Database Diagrams

X – Tables

 

I have commented that line in bold and it will search everything for entered string value in this case.

 

To search text in a sub-procedure or otherwise

 

CREATE PROCEDURE [dbo].[Find_Text_In_SP]

@StringToSearch varchar(100)

AS

   SET @StringToSearch = '%' +@StringToSearch + '%'

   SELECT Distinct SO.Name

   FROM sysobjects SO (NOLOCK)

   INNER JOIN syscomments SC (NOLOCK) on SO.Id = SC.ID

   --AND SO.Type = 'P'

   AND SC.Text LIKE @stringtosearch

   ORDER BY SO.Name

 

To search for a string within subprocedure name:

 

CREATE PROCEDURE [dbo].[Find_SPName_With_Text]

   @StringToSearch varchar(100)

AS

   SET @StringToSearch = '%' + @StringToSearch + '%'

   SELECT DISTINCT SO.NAME

   FROM SYSOBJECTS SO (NOLOCK)

   WHERE SO.TYPE = 'P'

   AND SO.NAME LIKE @StringToSearch

   ORDER BY SO.Name

 

-SB

Monday, June 01, 2009

Remove Delete Permission on Windows 2003 Server

In order to remove delete permissions so that a user is able to write files to a shared location on File Server but is unable to delete those files:

-         Give the user Write access and take away Modify access

-         Also, take away CREATED OWNER access on the parent folder and child objects; else the user who copies the file is able to delete the file as CREATED OWNER gets FULL CONTROL on the files he/she copies to the shared location.

-         Make sure you check the box to “Replace permission entries on all child objects with entries shown here that apply to child objects” under Advanced Security Settings option on the parent folder and every time you change permission for the whole tree.

 

Regards,

Savitur Badhwar

 

 

 

Wednesday, April 29, 2009

 

How do I search for special characters (e.g. %) in SQL Server?

 

There are several characters that have special meaning within a SQL query, for example the percent sign (%) in a LIKE query is a wildcard that essentially means "any number of characters can go here." Likewise, the underscore (_) is a wildcard that says "any single character can go here." So what if you are actually looking for a value that contains a literal percent sign? You will end up with bizarre results if you try the following: 
 

SELECT columns FROM table WHERE 
    column LIKE '%%%'

 
Instead, you can try one of the following solutions: 
 

SELECT columns FROM table WHERE 
    column LIKE '%[%]%' 
 
-- or 
 
SELECT columns FROM table WHERE 
    column LIKE '%\%%' ESCAPE '\'

 
The first query 'delimits' the special character with square brackets, telling the engine to treat it as a normal literal character instead of a character with special meaning. The second query uses a custom escape character -- you can use any character you like, just be careful that you aren't also expecting to use it as part of the literal string. 
 
Now, you might be wondering, how do I escape a square bracket? If you have something like this: 
 

SELECT columns FROM table WHERE 
    column LIKE '%[SQL Server Driver]%'

 
The results won't be what you expect, because an opening square bracket is considered a special character. Surprisingly, you can avoid this problem in much the same way, by one of the following two queries: 
 

SELECT columns FROM table WHERE 
    column LIKE '%[[]SQL Server Driver]%' 
 
-- or 
 
SELECT columns FROM table WHERE 
    column LIKE '%\[SQL Server Driver]%' ESCAPE '\'

 
You can do this replacement at the ASP side, before passing the string in, or within the SQL Server code itself.

 

-Savitur

TIFF attachments may not be shown correctly in OWA 2007 and show RED "X" instead

Issue: In a Microsoft Exchange Server 2007 64-bit standard version environment, using windows 2003 64bit-version. We send e-mail message by outlook 2000 in Rich Text Format (RTF) format and attach with tiff attachment.

We found that the tiff image attachment cannot display correctly. the icon shows as a red "X".

Other attachment icons are shown correctly. The problem also exist when recipient use OWA2007.

Issue description: The icons that represent TIFF attachments may not be shown correctly in OWA 2007

The problem was that Internet Explorer (IE) cannot render TIFF images. It can render JPG, GIF, BMP and etc, but not TIFF. In Outlook 2003 and earlier, Outlook Express, and OWA, all use IE to render HTML. Since IE cannot display the TIFF, we get the red X. Outlook 2007 uses Wordmail to render all messages, and since Word can render TIFF files, the messages are displayed properly.

Workarounds:

1.       Use HTML or Plain Text instead of Rich Text when composing the message.

2.       Change the image format to something supported by IE (GIF, BMP and etc)

3.       Don’t send TIFF’s inside the message body, and attach them in the zip file

Fixes:

·                                 To resolve this problem, install Update Rollup 3 for Exchange Server 2007 Service Pack 1 (SP1) on the Exchange server. For more information, click the following article number to view the article in the Microsoft Knowledge Base:

949870  (http://support.microsoft.com/kb/949870/ ) Description of Update Rollup 3 for Exchange Server 2007 Service Pack 1

 

 

 

Regards,

 

Savitur Badhwar

Monday, September 15, 2008

Error in Publishing ASP.NET

If you get an error like "Access to the path 'C:\Documents and Settings\username\Local Settings\Temp\~6d4\bin\App_WebReferences.compiled' is denied." when you use the VS2005 | Build menu | Publish Web Site and your site impersonates a user this may help.

Open up Windows Explorer and navigate to the Temp directory specified in the path. In this example, go to "
C:\Documents and Settings\usb00528\Local Settings\Temp". Now right-click on the Temp directory and go to the security tab. Add the user that you are impersonating (usually specified in you web.config) and give the user Read and Write permissions. Now re-try the Publish Web Site menu item and it should publish successfully now. Yeah!

 

 

Regards,

 

Savitur Badhwar

(Computer Systems & Network Administrator)

Custom Control Sensors, Inc.

21111 Plummer Street | Chatsworth, CA 91311

Ph 818.341.4610 x2205 | Fax 818.709.0426

Chatsworth | Burbank | Mexico | http://www.ccsdualsnap.com

 

"Do all the good you can, by all the means you can, in all the ways you can, in all the places you can, to all the people you can, as long as ever you can" ~ John Wesley

 

CAUTION - The information contained in this communication is for the exclusive use of the addressee and may contain confidential privileged and non-disclosable information. If the recipient of this communication is not the addressee, or a person responsible for delivering the communication to the addressee, such recipient is prohibited from using this communication in any way. If you have received this communication by mistake, please notify us immediately. Any information related in the foregoing should be independently confirmed with the sender before reliance thereon including that represented to be from Custom Control Sensors, Inc.

 

 

 

Sunday, May 11, 2008

Anaylze Crash Mini Dump in Windows XP

About
So you got a XP blue screen of death (BSOD) and you'd like to have a crack at fixing it? Well hopefully this might help.

Turn On Minidumps

If you havn't already turned on minidumps, go to the Control Panel and follow this steps:
  1. System Icon
  2. Advanced Tab
  3. Startup and Recovery -> Settings
  4. Enable Write an Event to the system log
  5. Disable Automatically Restart
  6. Select the following debugging information:
    • Small memory dump (64 Kb)
    • Small Dump Directory : %SystemRoot%\Minidump
  7. Confirm all and restart the computer.

Crash It

Do whatever to make it crash. In my case it was leave the video encoding running overnight.

Install Tools

If you havn't got the windows debugging tools installed, then install the Microsoft Debugging Tools (Direct Link)

Analyse The MiniDump

To extract useful information out of the minidump file created:
  1. Open a command prompt (Start -> Run -> "cmd")
  2. cd \program files\debugging tools (Or wherever they are installed to)
  3. kd -z C:\WINDOWS\Minidump\Mini???????-??.dmp
  4. kd> .logopen c:\debuglog.txt
  5. kd> .sympath srv*c:\symbols*http://msdl.microsoft.com/download/symbols
  6. kd> .reload;!analyze -v;r;kv;lmnt;.logclose;q
  7. You now have a debuglog.txt in c:\, open it in a text edit (Notepad?).

Post Mortem

Look for the MODULE_NAME and IMAGE_NAME headings. This is the program that caused the error. Sometimes when it's a device driver it means that that device is causing the BSOD and by disabling it or updating the driver your system will run stable. If you don't know what device that name relates to then Google it.

I provide this information for free without any support.

Hope it helps.


 



Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now.

Monday, March 24, 2008

ASP.NET 2.0 Gridview/Dataview Update does not work

Problems with my GridView/Dataview update, it doesn't update the record in the database, it doesn't generate an error either, it just reloads the page with the previous values.


Check 1:

If you select the GridView in the designer, and select that entry in the Properties box, you can select the correct values.The result should change your source line to look something like the following (in bold):

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="id" DataSourceID="SqlDataSource1">


Check 2:

If you have NULL fields in your data and checked the "Use Optimistic Concurrency" option when configuring your SqlDatasource, then the update won't work. Re-configure the SqlDataSource (use the wizard again) and uncheck the "Use Optimistic Concurrency" option. It should work fine afterwards.

Friday, February 29, 2008

Authenticating a Windows User in .NET

Authenticating a Windows User in .NET

When it comes to authenticating a windows user from within a .NET application, a developer has 3 options

  1. Querying Active Directory via LDAP (Lightweight Directory Access Protocol)
  2. Microsoft.Samples.Security.SSPI
  3. LogOnUser API (advapi32.dll)

Personally I prefer the third option. Let me explain why.

Querying the Active Directory is the most common way of performing authentication or at least it seems that way since when you google the subject most of the results point to this solution. An active directory is a directory structure used on Microsoft Windows based computers and servers to store information and data about networks and domains. It is primarily used for online information and was originally created in 1996 and first used with Windows 2000. An active directory (sometimes referred to as an AD) does a variety of functions including the ability to provide information on objects, helps organize these objects for easy retrieval and access, allows access by end users and administrators and allows the administrator to set security up for the directory. So its obvious that AD's sole purpose is not authentication. Hence the frustrated comments you WILL find on various blogs and other web pages on performing authentication using AD. In addition, the active directory feature should be installed on a server to make this work. If its not installed querying the AD amounts to no result.

I must admit that my knowledge on the second solution is much limited. But when going through some solutions in the web I saw that it required some fiddling with windows sockets involving some classes like Socket, TcpListener, etc. I could only imagine what sort of problems you may come across when you try that out in a firewalled environment.

So to be on the safe side I chose to go with the LogOnUser API. IMHO there is not enough documentation to be found in the internet on how to use the Windows LogOnUser API exposed by advapi.dll so I had to depend on trial and error and managed to create a managed wrapper consisting of a set of classes which I mention below. It is possible to perform the following functions with this wrapper.

  • Authenticating a local or domain windows user
  • See whether a windows user is in a specified windows user group
  • List all windows user groups that a certain windows user belongs to.
  • Impersonation may also be possible with some additional lines of coding.

Here's how I got it working,

The first class called 'WindowsAPIDeclarations' contains all the Windows API declarations.

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace libWinSecuritySubSystem
{
internal sealed class WindowsAPIDeclarations
{
internal static Int16 LOGON32_LOGON_NETWORK = 3;
internal static Int16 LOGON32_LOGON_INTERACTIVE = 2;
internal static Int16 LOGON32_PROVIDER_DEFAULT = 0;

internal WindowsAPIDeclarations() { }

[DllImport("advapi32.dll")]
internal static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
internal static extern bool CloseHandle(IntPtr handle);
}
}

The second class "AuthenticationService" contains the main AuthenticateUser() method. Remember to replace the string "<YOUR DOMAIN NAME HERE>" with your windows domain name in which you want to do the authentication.

using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Principal;
using System.Runtime.InteropServices;
using System.ComponentModel;
using System.Collections;

namespace libWinSecuritySubSystem
{
public sealed class AuthenticationService
{
public static AuthenticationResult AuthenticateUser(string userName, string password)
{
IntPtr token = IntPtr.Zero;

try
{
string domainName = "<YOUR DOMAIN NAME HERE>";

if (!WindowsAPIDeclarations.LogonUser(userName, domainName, password, WindowsAPIDeclarations.LOGON32_LOGON_INTERACTIVE, WindowsAPIDeclarations.LOGON32_PROVIDER_DEFAULT, ref token))
{
int errID = Marshal.GetLastWin32Error();
throw new Win32Exception(5);
}

WindowsPrincipal principal = new WindowsPrincipal(new WindowsIdentity(token));
WindowsAPIDeclarations.CloseHandle(token);

return new AuthenticationResult(true, null, new AuthenticatedUser(principal));
}
catch (Exception ex)
{
try
{
WindowsAPIDeclarations.CloseHandle(token);
}
catch (Exception) { }
return new AuthenticationResult(false, ex, null);
}
}
}
}

The third class named "AuthenticationResult" contains information regarding the ultimate result of the AuthenticateUser() method.

using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Principal;
using System.ComponentModel;

namespace libWinSecuritySubSystem
{
public class AuthenticationResult
{
bool isAuthenticated;
Exception authenticationException;
AuthenticatedUser user;

internal AuthenticationResult(bool isAuthenticated, Exception authenticationException, AuthenticatedUser user)
{
this.isAuthenticated = isAuthenticated;
this.authenticationException = authenticationException;
this.user = user;
}

public AuthenticatedUser User
{
get { return user; }
}

public bool IsAuthenticated
{
get { return isAuthenticated; }
}

public Exception AuthenticationException
{
get { return authenticationException; }
}
}
}

Last but not least the "AuthenticatedUser" class which contains the functions to get info on the authenticated user.

using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Principal;
using System.Collections;

namespace libWinSecuritySubSystem
{
public class AuthenticatedUser
{
WindowsPrincipal principal;

internal AuthenticatedUser(WindowsPrincipal principal)
{
this.principal = principal;
}
public WindowsPrincipal Principal
{
get { return principal; }
}
public bool IsUserInGroup(string groupName)
{
try
{
return principal.IsInRole(groupName);
}
catch (Exception)
{
return false;
}
}

public bool IsUserInGroup(WindowsBuiltInRole builtInGroup)
{
try
{
return principal.IsInRole(builtInGroup);
}
catch (Exception)
{
return false;
}
}

public Dictionary<string, string> GetGroups()
{
Dictionary<string, string> groups = new Dictionary<string,string>();
IdentityReferenceCollection irc = ((WindowsIdentity)(principal.Identity)).Groups;
foreach (IdentityReference ir in irc)
groups.Add(ir.Value, ir.Translate(typeof(NTAccount)).Value);

return groups;
}

}
}

Additional functions like impersonation may also be introduced as necessary.

Tuesday, October 09, 2007

Remote Administrator v2.2 on Windows Server 2003 Standard x64 Edition

To install Radmin v2.2 on Windows x64 edition:

First install Radmin Server v2.2 on your computer.
Due to how Microsoft has changed its handling of 32bit applications under XP 64bit, the default installer for Radmin does not work properly.
When the installer says to put the r_server into system32, Microsoft re-directs the file to C:\WINDOWS\SysWOW64. Unfortunately, Microsoft was not also smart enough to intercept the service creation call and change that path as well. Evidently on the X64 OS, the service has to be in the C:\Windows\SysWOW64

The following information is to be used at your own risk.
Go to Start -> Run -> Type Regedit and press “Enter” button.
Go to [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\r_server]
Look for the Imagepath string that looks like "c:\windows\system32\r_server.exe /service" Change the “C:\Windows\System32” to “C:\Windows\SysWOW64”
Use F3 to search for any occurrences and then you can start your service just fine.
Go to Start -> All Programs ->Remote Administrator v2.2 -> Start Remote Administrator server.

My experience has been on Microsoft® Windows® Server 2003 Standard x64 Edition Version 5.2.3790 Service Pack 1 Build 3790 that the standard install did exactly what it was expected to, placed the r_server.exe in the c:\windows\SysWOW64 directory and correctly installed the service to the same path, but it would not start nor did it generate any logs or errors other than the service reported that it did not start in the time expected.
Evidently on the X64 OS, the service has to be in the C:\Windows\SysWOW64 or it will not start. Once I made the coresponding change to the registry, r_server worked as expected.

Cheers!

File (5GB) Copy Error to external hard drive

Was unable to copy 5GB *.iso file from Windows XP to external hard drive 160GB.
Error: Not enough disk space
 
Solution:
FAT32 does not support files over 4 GB in size.  Reformat the external drive to NTFS, you should be fine.
But, we dont want to do that as other version of windows on FAT32 would not see the drive then.



Check out the hottest 2008 models today at Yahoo! Autos.

Wednesday, September 26, 2007

Backup Exec Backup Job Fail due to an Open File

"Corrupt data encountered" (a000fe36 HEX or e000fe36 HEX) is reported when a backup job fails.


Details:

Final Error Code: a000fe36 HEX (0xa000fe36 HEX) or e000fe36 HEX (0xe000fe36 HEX)
Final Error Description: "Corrupt data encountered. See the job log for details."
Final Error Category: Resource Errors
Error Text In Job Log: "Warning: %File% is a corrupt file. This file cannot verify."

This error occurs when VERITAS Backup Exec (tm) attempts to back up a file that is in use by another application or user.

Backup Exec may back up partial data from such a file, but when it is not able to continue the backup of the file, Backup Exec marks the file on the tape as corrupt (Figure 1).

Figure 1

Note: The error refers to the instance of the file on the tape. The file on the hard disk drive may be intact.

Backup Exec Advanced Open File Option (AOFO) can be used to avoid the error. The AOFO component of Backup Exec enables the functionality to perform a complete backup of files which are open through various applications. This is a "paid for" option.

If AOFO is not used, then the following are the workarounds to avoid the error:

1. Click Tools Options Properties Job Defaults Backup. Select Never under Open file backup when Advanced Open File Option is not used (Figure 2).

Figure 2


Select this option to have Backup Exec skip open files if they are encountered during the backup operation. A listing of skipped files will appear in the job log for the backup.

2. Close the respective files during backup

Monday, September 24, 2007

Recover Hard-Deleted Emails with DumpsterAlwaysOn option in Microsoft Outlook

In Microsoft Outlook, there are two types of delete actions: hard deletes and soft deletes. A soft delete is when an item is moved to the Deleted Items folder in the Microsoft Outlook mailbox; the deleted item can be recovered any time before the Deleted Items folder is emptied. A hard delete is when an item is deleted without first putting it in the Deleted Items folder. (Pressing Shift + Delete in Microsoft Outlook executes a hard delete.) Hard deletes also take place if the remote server uses IMAP and doesn't have a Deleted Items folder.

After a hard delete, you may still be able to recover mail items from an Exchange mailbox -- it depends on what the Exchange server's delete retention time is set for. Typically 14 days for emails, contacts or other items and 30 days for mailboxes. You can change the settings on EMC Server Configuration Mailbox Right-click Mailbox Database Properties Select Limit Tab



This functionality is typically only enabled for the Deleted Items folder. Items hard-deleted from Sent Items, Drafts, Outbox or Inbox are usually gone for keeps.

If you want to set delete-recovery for those folders, you need to edit the client registry accessing the Exchange server through Outlook:


  1. Open the registry.


  2. Navigate to HKEY_LOCAL_MACHINESOFTWARE\Microsoft\Exchange\Client\Options.


  3. Add a DWORD value named DumpsterAlwaysOn and set it to 1.


  4. Restart Microsoft Outlook to make the change take effect.

This option can also be rolled out as part of a policy change or made permanent through a .REG file.

Note that even with this option activated, Microsoft Outlook 98 will not support deletions from non-mail folders, such as Contacts and Notes. Microsoft Outlook 2000 and 2003, however, will allow non-mail deleted items to be recovered with this option enabled.

Recover Deleted Items in Outlook

Provided you configured the Windows Exchange mailbox store to hold deleted items, users can restore their own emails from within Outlook 2003. All they have to do is click on the Tools menu, and then select Recover Deleted Items from the drop down menu. See diagram opposite. Naturally, the user can select which emails to recover. Any emails that they select Outlook will miraculously move to the Deleted Items Folder. If the option Recover Deleted Items is deactivated, then go to Deleted Items folder and delete one email for which you already have a backup. After you delete one item, the recover deleted item would be visible with past deleted items.



Slightly surprisingly, users can also recover deleted items using Exchange 2003's Outlook Web Access. In this case, select Options (menu) and Recover Deleted Items is right at the bottom of the page.

Helpful Links:

http://www.computerperformance.co.uk/exchange2003/exchange2003_recovery_deleted_item.htm

http://searchexchange.techtarget.com/tip/0,289483,sid43_gci1024524,00.html

Saturday, September 22, 2007

Backup Exec 11D GRT for Exchange Server

-When using the Granular Restore Technology (GRT) feature to perform Exchange data backups setting the Device to submit the data to a Backup-to-Disk folder is preferred. This will allow an image on disc, which can be used to create restore selections dynamically, and could greatly reduce the time required to restore individual Exchange data items. Make certain the B2d location is on a Local NTFS volume and is not on a NAS, ISCSI or USB attached device.
-After performing the GRT backup to the specified B2d device run a duplicate job to tape in case the space used in the original B2d location may be needed at a later time
-If a Backup to tape must be used in conjunction with the GRT feature, make certain that there is sufficient disk space on a NTFS volume local to the media server to perform the restore operation. Disk space equivalent to the size of the database containing the item, or items, to be restored is required.
-If multiple non-concurrent restore operations of individual items may be required, and the GRT backup data was written to tape, consider performing a set copy operation of the data to a backup-to-disk folder prior to performing the initial restore operation.  This will allow the use of dynamically created selections for individual items and will save a great deal of time in the event that multiple non-concurrent restore operations are required.


Be a better Globetrotter. Get better travel answers from someone who knows.
Yahoo! Answers - Check it out.