Wednesday, January 28, 2015

How to use macros and Scheduled Tasks to automatically start the program and to perform other tasks in Microsoft Dynamics GP

1. To create and to run a macro that automatically generates reports or that performs other tasks, follow these steps:a.  Start Microsoft Dynamics GP. Do not log on.
b.  In the Welcome to Microsoft Dynamics GP dialog box, press ALT+F8 to start recording the logon macro. Name the macro, and then save it to the installation folder for Microsoft Dynamics GP.

Note If the macro is not in the installation folder, you will receive the following error message:
Cannot open macro
c.  In the Server box, click a server.

Note It is important to select the appropriate server when you create the macro, even if the correct server was selected when you started Microsoft Dynamics GP.
d.  In the User ID field, enter the appropriate information for the user who will generate the report or who will generate other tasks.

Notes? It is important to do this step when you create the macro, even if the correct user ID is displayed when you start Microsoft Dynamics GP.
? To make sure that the desired user ID is recorded within the macro, we recommended that you delete any existing user ID from the field, move to the Password field, return to the User ID field, and then enter the desired ID.

e.  In the Password field, type the password for the user who is selected in step 1d.
f.  Click OK. The Company Login dialog box opens.
g.  From the Company list, click the company for which you want to log on, and then click OK.

Note It is important to select the appropriate company when you create the macro, even if the correct company is selected when the Company Login window opens.
h.  Complete all the steps that are required to process the reports or other tasks within this company.
i.  On the File menu, click Exit to close Microsoft Dynamics GP.

2. Use a text editor, such as Notepad, to add the following line as the second line of the macro.
Logging file 'macro.log'
Note This line prevents any message that is displayed by the macro from being displayed. Therefore, such a message cannot prevent a logon to Microsoft Dynamics GP. An example of such a message is the total run time of the macro. All messages that are generated by the macro are written to the Macro.log file.
3. To start Microsoft Dynamics GP by using the macro, create a batch file. To do this, follow these steps:a.  Create a file that has a .bat file name extension. For example, create a file that is named DynamicsGP.bat.
b.  Use a text editor, such as Notepad, to open the batch file.
c.  Paste the following line into the .bat file.
dynamics dynamics.set XXX.mac cd c:\Dynamics GP installation path
Note Replace XXX.mac with the name of the macro file that you assigned in Step 1b. Replace Dynamics GP installation path with the installation path of Microsoft Dynamics GP on this computer. For example, type the following path:
Program Files\Microsoft Dynamics\GP
d.  Save the changes, and then close the batch file.

Transfer SQL login regardless version


/************************************************************************************************
*
* Purpose: To capture all the SQL Server logins with the binary password regardless of SQL version.
* Script is compatiable with SQL 7 / SQL 2000 / SQL 2005. Need to save the results
* to a text file and run within a new query window.
*
* Created Date: Inital - 01/13/2006
*
* Revsions: 01/15/2006 - Made some formatting changes to the output text.
* 01/16/2006 - Made syntax change to account for Binary version of SQL Server.
* 01/16/2006 - Change version SQL version check because of syntax differences between
* SQL 2000 and 2005 with @@version.
* 04/10/2007 - Made change to deal with user names that begin with numbers instead of characters.
*               11/14/2008 - Made syntax change to update for SQL 2008
*
************************************************************************************************/

USE master
GO
IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL
 DROP PROCEDURE sp_hexadecimal
GO
CREATE PROCEDURE sp_hexadecimal
@binvalue varbinary(256),
@hexvalue varchar(256) OUTPUT
AS
DECLARE @charvalue varchar(256)
DECLARE @i int
DECLARE @length int
DECLARE @hexstring char(16)
SELECT @charvalue = '0x'
SELECT @i = 1
SELECT @length = DATALENGTH (@binvalue)
SELECT @hexstring = '0123456789ABCDEF'
WHILE (@i <= @length)
BEGIN
 DECLARE @tempint int
 DECLARE @firstint int
 DECLARE @secondint int
 SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))
 SELECT @firstint = FLOOR(@tempint/16)
 SELECT @secondint = @tempint - (@firstint*16)
 SELECT @charvalue = @charvalue +
SUBSTRING(@hexstring, @firstint+1, 1) +
SUBSTRING(@hexstring, @secondint+1, 1)
 SELECT @i = @i + 1
END
SELECT @hexvalue = @charvalue
GO

IF OBJECT_ID ('sp_help_revlogin') IS NOT NULL
 DROP PROCEDURE sp_help_revlogin
GO
CREATE PROCEDURE sp_help_revlogin @login_name sysname = NULL AS
DECLARE @name    sysname
DECLARE @xstatus int
DECLARE @binpwd  varbinary (256)
DECLARE @txtpwd  sysname
DECLARE @tmpstr  varchar (256)
DECLARE @SID_varbinary varbinary(85)
DECLARE @SID_string varchar(256)

IF (@login_name IS NULL)
 DECLARE login_curs CURSOR FOR
SELECT sid, name, xstatus, password FROM master..sysxlogins
WHERE srvid IS NULL AND name <> 'sa'
ELSE
 DECLARE login_curs CURSOR FOR
SELECT sid, name, xstatus, password FROM master..sysxlogins
WHERE srvid IS NULL AND name = @login_name
OPEN login_curs
FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd
IF (@@fetch_status = -1)
BEGIN
 PRINT 'No login(s) found.'
 CLOSE login_curs
 DEALLOCATE login_curs
 RETURN -1
END
SET @tmpstr = '/* sp_help_revlogin script '
PRINT @tmpstr
SET @tmpstr = '** Generated '
 + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */'
PRINT @tmpstr
PRINT ''
PRINT 'DECLARE @pwd sysname'
WHILE (@@fetch_status <> -1)
BEGIN
 IF (@@fetch_status <> -2)
 BEGIN
PRINT ''
SET @tmpstr = '-- Login: ' + @name
PRINT @tmpstr
IF (@xstatus & 4) = 4
BEGIN -- NT authenticated account/group
 IF (@xstatus & 1) = 1
 BEGIN -- NT login is denied access
SET @tmpstr = 'EXEC master..sp_denylogin ''' + @name + ''''
PRINT @tmpstr
 END
 ELSE BEGIN -- NT login has access
SET @tmpstr = 'EXEC master..sp_grantlogin ''' + @name + ''''
PRINT @tmpstr
 END
END
ELSE BEGIN -- SQL Server authentication
 IF (@binpwd IS NOT NULL)
 BEGIN -- Non-null password
EXEC sp_hexadecimal @binpwd, @txtpwd OUT
IF (@xstatus & 2048) = 2048
 SET @tmpstr = 'SET @pwd = CONVERT (varchar(256), ' + @txtpwd + ')'
ELSE
 SET @tmpstr = 'SET @pwd = CONVERT (varbinary(256), ' + @txtpwd + ')'
PRINT @tmpstr
EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT
SET @tmpstr = 'EXEC master..sp_addlogin ''' + @name + ''
 + ''', @pwd, @sid = ' + @SID_string + ', @encryptopt = '
 END
 ELSE BEGIN
-- Null password
EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT
SET @tmpstr = 'EXEC master..sp_addlogin ''' + @name + ''
 + ''', NULL, @sid = ' + @SID_string + ', @encryptopt = '
 END
 IF (@xstatus & 2048) = 2048
-- login upgraded from 6.5
SET @tmpstr = @tmpstr + '''skip_encryption_old'''
 ELSE
SET @tmpstr = @tmpstr + '''skip_encryption'''
 PRINT @tmpstr
END
 END
 FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd
 END
CLOSE login_curs
DEALLOCATE login_curs
RETURN 0
GO
IF OBJECT_ID ('seeMigrateSQLLogins') IS NOT NULL
 DROP PROCEDURE seeMigrateSQLLogins
GO
create procedure seeMigrateSQLLogins @login_name sysname = NULL
as
declare
@name char(50),
@binpwd  varbinary (256),
@txtpwd  sysname,
@tmpstr  varchar (256),
@SID_varbinary varbinary(85),
@SID_string varchar(256),
@Is_Policy bit,
@Is_Exp bit,
@type char(1),
@Pol char(3),
@Exp char(3)
set nocount on
create table #logins (
[name] nvarchar(128) NOT NULL,
[sid] varbinary(85) NOT NULL,
[type] char(1) NOT NULL,
[is_policy_checked] bit default 0,
[is_expiration_checked] bit default 0,
[password_hash] varbinary(256) )
insert #logins (name, sid, type)
select name, sid, type from sys.server_principals where
(type_desc = 'SQL_LOGIN' or type_desc = 'WINDOWS_LOGIN') and name <> 'sa' and name <> 'NT AUTHORITY\SYSTEM'
update a set a.is_policy_checked = b.is_policy_checked, a.is_expiration_checked = b.is_expiration_checked, a.password_hash = b.password_hash
from #logins a, sys.sql_Logins b
where a.sid = b.sid
set nocount off
IF (@login_name IS NULL) --Not a single user, get the list
 DECLARE seelogin_curs CURSOR FOR
SELECT name, sid, password_hash, type, is_policy_checked, is_expiration_checked FROM #logins
WHERE name <> 'sa'
ELSE
 DECLARE seelogin_curs CURSOR FOR
SELECT name, sid, password_hash, type, is_policy_checked, is_expiration_checked FROM #logins
WHERE name = @login_name
OPEN seelogin_curs
FETCH NEXT FROM seelogin_curs INTO @name, @SID_varbinary, @binpwd, @type, @Is_Policy, @Is_Exp
IF (@@fetch_status = -1)
BEGIN
 PRINT 'No login(s) found.'
 CLOSE seelogin_curs
 DEALLOCATE seelogin_curs
END
SET @tmpstr = '/* seeMigrateSQLLogins - For SQL Server 2005 Only '
PRINT @tmpstr
SET @tmpstr = '** Generated '
 + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */'
PRINT @tmpstr
PRINT ''
WHILE (@@fetch_status <> -1)
BEGIN
IF @type = 'S'
BEGIN
PRINT '/* SQL Login ******************/'
EXEC sp_hexadecimal @binpwd, @txtpwd OUT
EXEC sp_hexadecimal @SID_varbinary, @SID_string OUT
IF @Is_Policy = 1 Begin set @Pol = 'ON' End ELSE Begin set @Pol = 'OFF' END
IF @Is_Exp = 1 Begin set @Exp = 'ON' End ELSE Begin set @Exp = 'OFF' END
SET @tmpstr = 'Create Login [' + rtrim(@name) + '] WITH PASSWORD = ' + @txtpwd + ' hashed, sid = ' + @SID_string + ', CHECK_POLICY = ' + @Pol + ', CHECK_EXPIRATION = ' + @Exp
PRINT @tmpstr
PRINT ''
END
Else
BEGIN
PRINT '/* SQL Login ******************/'
EXEC sp_hexadecimal @SID_varbinary, @SID_string OUT
SET @tmpstr = 'Create Login [' + rtrim(@name) + '] FROM WINDOWS; '
PRINT @tmpstr
PRINT ''
END
FETCH NEXT FROM seelogin_curs INTO @name, @SID_varbinary, @binpwd, @type, @Is_Policy, @Is_Exp
END
CLOSE seelogin_curs
DEALLOCATE seelogin_curs
drop table #logins
GO

declare
@version2005 char(5)
declare
@version2008 char(5)

--Get the current version of SQL Server running
select @version2005 = substring(@@version,29,4)
select @version2008 = substring(@@version,35,4)

if @version2005 = '9.00'
Begin
exec seeMigrateSQLLogins
End
Else if @version2008 = '10.0'
Begin
exec seeMigrateSQLLogins
End
Else
begin
exec sp_help_revlogin
End

IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL
 DROP PROCEDURE sp_hexadecimal
GO
IF OBJECT_ID ('sp_help_revlogin') IS NOT NULL
 DROP PROCEDURE sp_help_revlogin
GO
IF OBJECT_ID ('seeMigrateSQLLogins') IS NOT NULL
 DROP PROCEDURE seeMigrateSQLLogins
GO
/* End Script */

GP-GP performance

A , SQL SP
https://mbs.microsoft.com/customersource/support/documentation/systemrequirements
B , GP SP
https://mbs.microsoft.com/customersource/support/downloads/servicepacks
C, Posting table for posting slow performance
If you experience performance issues when you post, run the following SELECT statement on the PJOURNAL table. Run the statement against all the company databases.
SELECT * FROM PJOURNAL
If rows are returned, we recommend that you clear the contents of the table by running the following statement against all the company databases.
DELETE PJOURNAL
D, Enable delete Pjournal Job
INTRODUCTION
This article describes how to use Microsoft SQL Server Enterprise Manager to enable the Delete PJournal job that is created during the installation of Microsoft Dynamics GP or of Microsoft Business Solutions - Great Plains. When you enable the Delete PJournal job, the speed of the posting process in the program increases.
MORE INFORMATION
To enable the Delete PJournal job in Enterprise Manager, follow these steps: 1. Click Start, click Programs, click Microsoft SQL Server, and then click Enterprise Manager.
2. Expand Microsoft SQL Servers, expand SQL Server Group, and then expand the instance of SQL Server for Microsoft Dynamics GP or for Microsoft Business Solutions - Great Plains.
3. Expand Management, expand SQL Server Agent, and then click Jobs.
4. Right-click Remove Posted PJournals for your company database, and then click Properties.
5. Click to select the Enabled check box, click Apply, and then click OK.
Note By default, this job is specified to run every 30 minutes. You can change the frequency and the time of the job execution. To do this, follow these steps:1. Right-click Remove Posted PJournals for your company database, and then click Properties.
2. Click the Schedules tab.
3. Click Edit.

E, Performance issues that occur when you open windows.
1. Open the user preferences. To do this, follow the appropriate step:• In Microsoft Dynamics GP 10.0, click Microsoft Dynamics GP, and then click User Preferences.
• In Microsoft Dynamics GP 9.0 and in earlier versions, click Tools, point to Setup, and then click User Preferences.

2. Click AutoComplete.
3. Click to clear the Show AutoComplete Suggestions check box, and then click OK.
4. In Windows Explorer, delete the AutoCmpl.dat file and the AutoCmpl.idx file. These files are in the following folders: • In Microsoft Dynamics GP 10.0, the files are in the following location:
Document and Settings\username\Application Data\Microsoft Business Solutions\Microsoft Dynamics GP\dbname\
• In Microsoft Dynamics GP 9.0 and in earlier versions, the files are in the following location:
Document and Settings\username\Application Data\Microsoft Business Solutions\Great Plains\dbname\

5. Repeat step 1 through step 5 for each user.

F, Performance issues that occur when you log on to Microsoft Dynamics GP
Performance issues that occur when you log on to Microsoft Dynamics GP
1. Make sure that you have Microsoft Dynamics GP 9.0 Service Pack 2 or a later version installed. Logon issues were caused by an issue in which the Menu Master table (SY07110) became too large. To obtain the latest service pack for Microsoft Dynamics GP, visit the following Microsoft Web site:
https://mbs.microsoft.com/customersource/support/downloads/servicepacks/microsoftdynamicsgp90_mspreleases.htm?printpage=false
2. The location of the modified Reports.dic file and the modified Forms.dic file may affect the logon performance. If the modified dictionaries are on a network share, copy the dictionaries to the local Microsoft Dynamics GP folder, and then try to log on. To do this, follow these steps:a.  To verify the location of the modified dictionaries, locate the Microsoft Dynamics GP folder. By default, this folder is in the following location:
C:\Program Files\Microsoft Dynamics\GP
b.  Right-click the Dynamics.set file, and then open the Dynamics.set file in a text editor such as Notepad or WordPad.
c.  Locate the path of the Reports.dic file and of the Forms.dic file. If the path is located on a network share, change the path to a local path.

3. Certain SmartList reminders may cause logon issues, depending on the homepage role for that user. To verify the reminders for a user, use the appropriate step:• In Microsoft Dynamics GP 9.0, click View, and then click Reminders. At the bottom, click Change Reminder Preferences. Remove any reminders in the Custom Reminders section at the bottom of the window.
• In Microsoft Dynamics GP 10.0, click Microsoft Dynamics GP, and then click Reminders. Click Change Reminder Preferences, and then remove the reminders in the Custom Reminder section at the bottom of the window.

G, Virus Scanner , exclude SQl database files and GP files and location

H, Sources of additional troubleshooting information
The System Information tool
Run the System Information tool to obtain the hardware specifications of the following computers: • The computer that is running SQL Server
• The client workstations
• The computer that is running Terminal Server
To obtain this information, follow these steps on each computer:1. Click Start, click Run, type msinfo32, and then click OK.
2. Click File, and then click Save to save this information to a file.

Trace logs
Create a Dexsql.log file and a SQL trace when you reproduce the performance issue. For more information, click the following article numbers to view the articles in the Microsoft Knowledge Base:
850996 How to create a Dexsql.log file for Microsoft Dynamics GP
857246 How to create a SQL Trace with Profiler on Microsoft SQL Server 2000
To enable additional tracing, use SQL Query Analyzer to run the following script against the master database.
DBCC Traceon (1204,3605 -1)
Note This trace flag captures more information about deadlocks in the SQL Server error logs. To view the SQL Server error logs, start SQL Enterprise Manager. Click Management, and then click SQL Server Logs

H, SQLDIAG diagnostic tool
TechKnowledge Content
The information in this document applies to:

- Great Plains on Microsoft SQL Server

SUMMARY

This article describes the SQLDIAG tool and what it is used for.

MORE INFORMATION

The SQLDIAG tool gathers and stores diagnostic information into \MSSQL7\LOG\SQLDIAG.txt (Microsoft SQL Server 7.0) or \Program Files\Microsoft SQL Server\MSSQL\LOG\SQLDIAG.txt (Microsoft SQL Server 2000). This output file includes error logs, output from sp_configure and additional version information. Sqldiag must be run on the server itself from an MS-DOS window.

The syntax for a DEFAULT instance of SQL Server is as follows:

sqldiag -U sa -P password

For example, if the Login ID is sa and the password is access, you would type the following at the DOS prompt:

sqldiag -U sa -P access

If you have a named instance of SQL Server, the following syntax is as follows:

sqldiag -U sa -P password -i Instance Name

For example, if the SQL Server instance was named SERVER\SQL2000, you would type the following at the DOS prompt:

sqldiag -U sa -P access -i SQL2000

You should now be able to locate the sqldiag.txt and view the diagnostic information. If the SQL Server is running, sqldiag gathers the following items:

- Text of all error logs
- Registry information
- dll version information
- Output from: sp_configure, sp_who, sp_lock, sp_helpdb_, xp_msver, sp_helpextendedproc, sysprocesses
- Input buffer SPIDs/deadlock information
- Server Diagnostics Report (processor list, memory report, services report, environment report, system report)

GP application path in registry


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Great Plains\8.0\Install

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Business Solutions\Great Plains\1033\Inst01\SETUP\Apppath

Report Writer-Modify 12 check 12 lines default.

Report writer, Tools>Section>>Addtional Header >> Change 12 lines

GP-Delete User from Backend

Use dynamics
delete ACTIVITY where USERID = 'XXXX'
delete SY01400 where USERID = 'XXXX'
delete SY02000 where USERID = 'XXXX'
delete SY60100 where USERID = 'XXXX'
delete sy10500 where USERID = 'XXXX'
then manually delete SQL security login



In GP10 security table was integrated in view sy10000